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;"
当我手动执行非常有效的命令时
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;"