在使用 psql 在本地下载/保存之前,将 gzip 表转换为 AWS 实例上的 csv[英] gzip table to csv on AWS instance, prior to downloading / saving locally with psql

本文是小编为大家收集整理的关于在使用 psql 在本地下载/保存之前,将 gzip 表转换为 AWS 实例上的 csv的处理方法,想解了在使用 psql 在本地下载/保存之前,将 gzip 表转换为 AWS 实例上的 csv的问题怎么解决?在使用 psql 在本地下载/保存之前,将 gzip 表转换为 AWS 实例上的 csv问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我是 PostgreSQL 和 psql CLI 的新手.我的带宽极其有限,这导致从 AWS 实例下载每个表需要几个小时,每个表为 1 - 5 GB.使用 psql 登录数据库后,我使用的当前命令:

\copy (SELECT * FROM table) TO table.csv CSV DELIMITER ','

是否可以在下载和本地保存之前查询与上述类似的表,该表实际上将 csv 文件压缩到 Amazon PostgreSQL 实例上,从而将 1 - 5 GB 的下载量减少到 <1 GB;显着减少下载时间?

类似于:

\copy (SELECT * FROM table) TO csv.zip CSV DELIMITER ',' TO table.csv.zip

我遇到了这个 gist,但列出的命令似乎是一个完整的转储所有表/整个数据库.我希望能够对表和子集查询执行相同的操作.

编辑:解决方案 = \copy (SELECT * FROM table) TO PROGRAM 'gzip > Users/username/folder/folder/my_table.gz' DELIMITER ',' 登录 psql 后

推荐答案

使用 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 ',';

本文地址:https://www.itbaoku.cn/post/1764181.html