我有一个简单的查询,我在Postgres SQL查询中运行,运行一堆查询,然后将其提取为CSV,[没有上面的一堆查询]是
COPY (SELECT * FROM public.view_report_teamlist_usertable_wash)
TO 'd:/sf/Reports/view_report_teamlist_usertable_wash.csv'
DELIMITER ','
CSV HEADER encoding 'UTF8' FORCE QUOTE *;
我可以改变上面的内容,将日期/时间[now()]附加到文件名吗?即。 'd:/sf/Reports/view_report_teamlist_usertable_wash_2017-08-23 14:30:28.288912+10.csv'
我已多次使用Google搜索,但只提出了从命令行运行它的解决方案
答案 0 :(得分:1)
如果您想要使用一次或不经常使用,您可以使用postgres DO。但是,如果你经常使用脚本,你应该写一个PL。
无论哪种方式,都应该是这样的:
DO $$
DECLARE variable text;
BEGIN
variable := to_char(NOW(), 'YYYY-MM-DD_HH24:MI:SS');
EXECUTE format ('COPY (SELECT * FROM public.view_report_teamlist_usertable_wash)
TO ''d:/sf/Reports/view_report_teamlist_usertable_wash_%s.csv''
DELIMITER '',''
CSV HEADER encoding ''UTF8'' FORCE QUOTE *',-- // %s will be replaced by string variable
variable -- File name
);
END $$;
-- // NOTE the '' for escaping '
编辑: DO与其他查询内联运行。