从远程选择查询获取 csv 文件

从远程选择查询获取 csv 文件

我有一个客户端 Windows 主机,想要连接到 Postgres 数据库,发出选择查询并将该查询返回到 Windows 主机 CSV 文件。

我确实知道 Postgres 有一个可以工作的复制命令。

copy (SELECT * from foo) To '/tmp/forDavid.csv' with CSV DELIMITER ',';

并且该客户每天都会访问此 SELECT 查询。客户端 Windows 主机和 Postgres 数据库位于内部网络上。

我想避免使用 PHPMyAdmin,因为他不太懂,我希望这尽可能简单。我确实知道 Perl,但这需要将 Perl 安装到客户端 Windows 主机上,而我不想这样做。

这个任务最简单的解决方案是什么?

答案1

您在这里要做的是使用COPY ... TO STDOUTCOPY 的形式,然后捕获输出,然后在本地系统或应用程序上捕获输出并将其写入本地文件。从命令行使用 psql 的简单示例(不使用 psql 的\copy东西,不需要将分隔符设置为逗号,因为这是 CSV 输出的默认设置):

psql -U ejones -h remote_host.com -c "COPY (SELECT * FROM foo) TO STDOUT CSV;" somedb > /tmp/forDavid.csv

https://www.postgresql.org/docs/9.5/static/sql-copy.html

相关内容