在使用psql在本地下载/保存之前,在AWS实例上使用gzip表到csv

问题描述 投票:1回答:1

我是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 ','

postgresql amazon-web-services gzip amazon-rds psql
1个回答
2
投票

使用psqlSTDOUT。此命令将输出返回给客户端并将其压缩:

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 ',';
© www.soinside.com 2019 - 2024. All rights reserved.