尝试使用COPY函数将查询导出到CSV时遇到一些问题。
如果未在上使用自定义文件名,则COPY可以正常运行并成功导出查询TO
。
问题与向创建的文件名添加“日期戳”(类型)有关。
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"
。
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$$;
...
你的报价很乱。使用美元报价进行简化。请注意,此处SO突出显示的语法具有误导性,因为它不了解美元报价。
DECLARE
只需要一次(虽然不是错误)。另外,BEGIN
不见了。
并to_char()
使得日期独立于区域的文本表示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句