2017-08-23 71 views
0

我有一個Postgres SQL查詢內運行運行一堆查詢然後提取到CSV,其中[未經束它上面的查詢]是Postgres的查詢複製到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

您可能需要爲此編寫一個pl/pgsql函數:https://www.postgresql.org/message-id/492F2C5B.4010608%40iol.ie – moooeeeep

+1

也可以看看這個:https:// stackoverflow的.com /一個/1025391分之22963085 – moooeeeep

回答

0

如果你想一次或不經常使用運行時,它的解決方案,你可以使用Postgres的事。但是,如果你經常使用腳本,你應該寫一個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與其他查詢在線運行。