使用自定义文件名path复制csv

我尝试使用COPY函数将查询导出到CSV时遇到一些问题。

如果不使用TO上的自定义文件名,则COPY运行正常并成功导出查询。

这个问题与添加一个“datestamp”(类似于)创build的文件名有关。

 declare var1 varchar(25); DECLARE STATEMENT TEXT; select into var1 current_date -1; STATEMENT := 'COPY (SELECT * from myTable) To ''E'C:\\Exports\\export_'||var1||'.csv' ''With CSV'; EXECUTE STATEMENT; 

在这种情况下, var1获得像2013-12-16这样的值,我需要将其添加到文件名以获取export_2012-12-16.csv

我假设这是'错位。 我已经尝试了几种组合,但没有成功,当然错误是ERROR: syntax error at or near "C"

Solutions Collecting From Web of "使用自定义文件名path复制csv"

plpgsql代码可以这样工作:

 ... DECLARE var1 text; BEGIN var1 := to_char(current_date - 1, 'YYYY-MM-DD'); EXECUTE $$COPY (SELECT * from myTable) TO E'C:\\Exports\\export_$$ || var1 || $$.csv' WITH CSV$$; ... 

你的报价纠结了。 使用美元报价来简化。 请注意,这里的语法突出显示是误导性的,因为它不理解美元引用。

DECLARE只需要一次(虽然不是一个错误)。 另外, BEGIN失踪了。

并且to_char()使独立于语言环境的日期的文本表示。