我是PostgreSQL和psql CLI的新手。我的带宽非常有限,这导致从AWS实例下载每个表需要数小时,每个表为1到5 GB。我用psql登录数据库后使用的当前命令:
\copy (SELECT * FROM table) TO table.csv CSV DELIMITER ','
是否有可能在下载和保存本地之前查询实际上在Amazon PostgreSQL实例上压缩csv文件的表,类似于上面的内容,从而将1 - 5 GB的下载量减少到<1 GB;显着减少下载时间?
就像是:
\copy (SELECT * FROM table) TO csv.zip CSV DELIMITER ',' TO table.csv.zip
我遇到了这个gist,但列出的命令似乎是所有表/整个数据库的完整转储。我希望能够对表和子集查询执行相同的操作。
编辑:登录psql后解决方案= \copy (SELECT * FROM table) TO PROGRAM 'gzip > Users/username/folder/folder/my_table.gz' DELIMITER ','
使用psql
和STDOUT
。此命令将输出返回给客户端并将其压缩:
psql yourdb -c "\COPY (SELECT * FROM table) TO STDOUT;" | gzip > output.gz
或者直接在数据库服务器(也是压缩文件)中,使用您选择的客户端:
COPY (SELECT * FROM table) TO PROGRAM 'gzip > /var/lib/postgresql/my_table.gz' DELIMITER ',';