Postgres使用DateTime查询复制到CSV

时间:2017-08-23 04:33:10

标签: postgresql

我有一个简单的查询,我在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搜索,但只提出了从命令行运行它的解决方案

1 个答案:

答案 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与其他查询内联运行。