Postgres/PSQL - 使用批处理文件自动将查询导出为 CSV

Postgres/PSQL - exporting automatically a query to CSV using a batchfile

当我手动执行非常有效的命令时

psql "postgresql://server:myport/base?user=me&password=password" 

\COPY (SELECT *  FROM MyTable WHERE dt_dern_modif > '2021-12-21') TO 'C:\Users\Me\notifs_dump_cron.csv' DELIMITER ';' CSV HEADER;

我尝试创建一个批次,每天将 postgres 中的 table 内容保存到 CSV 文件中,稍后将其发送到服务器上的 vat ftp。

我正在使用 windows 10 和 psql 11.13

如何进行导出?

我暂时尝试做类似的事情,但不匹配: file.bat

    psql "postgresql://server:myport/base?user=me&password=password" -c "\COPY (SELECT *  FROM MyTable ') TO 'C:\Users\Me\notifs_dump_cron.csv' DELIMITER ';' CSV HEADER;"

当我启动它时,我得到了以下回应:

psql "postgresql://server:myport/base?user=me&password=password" -c "\COPY (SELECT * FROM bng_safcom_cen.cofi;) TO 'C:\Users\SG41RPichet\Documents\notifs_dump_cron.csv' DELIMITER ';' CSV HEADER;"
psql : attention : option supplémentaire « \COPY (SELECT * FROM bng_safcom_cen.cofi;) TO 'C:\Users\SG41RPichet\Documents\notifs_dump_cron.csv' DELIMITER ';' CSV HEADER; » ignorée
psql (11.13, serveur 10.5 (Debian 10.5-1.pgdg80+1))
Attention : l'encodage console (850) diffère de l'encodage Windows (1252).
            Les caractères 8 bits peuvent ne pas fonctionner correctement.
            Voir la section « Notes aux utilisateurs de Windows » de la page
            référence de psql pour les détails.
Connexion SSL (protocole : TLSv1.2, chiffrement : ECDHE-RSA-AES256-GCM-SHA384, bits : 256, compression : désactivé)
Saisissez « help » pour l'aide.

table=>

好的,看来用连接字符串做不到。您必须使用 pgpass.conf 文件并执行 file.bat 如 :

psql -d base -h host -U me -w -p 5420 -c "\COPY (SELECT * FROM table WHERE dt_dern_modif > '2021-12-21') TO 'dump_cron.csv' DELIMITER ';' CSV HEADER;"