我有一个客户端Windows主机想连接到Postgres数据库,发出一个select查询,并返回该查询到Windows主机一个CSV文件。
我知道Postgres有一个可以工作的复制命令。
copy (SELECT * from foo) To '/tmp/forDavid.csv' with CSV DELIMITER ',';
而这个客户将每天访问这个SELECT查询。 客户端Windows主机和Postgres数据库位于内部networking上。
我想避免使用PHPMyAdmin,因为他不聪明,我想这是尽可能简单。 我知道Perl,但这将涉及安装Perl客户端Windows主机,我不想这样做。
这个任务最简单的解决scheme是什么?
这里你要做的是使用COPY ... TO STDOUTforms的COPY,然后捕获输出,然后捕获本地系统或应用程序的输出,并将其写入本地文件。 一个简单的例子,从命令行使用psql(不使用psql的\copy东西,不需要设置分隔符为逗号,因为这是CSV输出的默认值):
psql -U ejones -h remote_host.com -c "COPY (SELECT * FROM foo) TO STDOUT CSV;" somedb > /tmp/forDavid.csv