我需要将一个大表导出到csv文件并压缩它.

我可以使用复制命令从postgres导出它,比如-

COPY foo_table to '/tmp/foo_table.csv' delimiters',' CSV HEADER;

然后可以像gzip一样压缩它-

gzip -c foo_table.csv > foo.gz

这种方法的问题是,在我得到最终的压缩文件之前,我需要创建这个中间的csv文件,它本身是巨大的.

有没有一种方法可以在csv中导出表格并一步压缩文件?

当做

推荐答案

诀窍是让COPY将其输出发送到stdout,然后通过gzip传输输出:

psql -c "COPY foo_table TO stdout DELIMITER ',' CSV HEADER" \
    | gzip > foo_table.csv.gz

Postgresql相关问答推荐

我需要一个变量来引用上周的星期五

如何将存储的、生成的列添加到非常大的表中?

使用PythonPolar在PostgreSQL中存储

在特定值的组聚合中添加标签列作为结果

将整数(以毫秒为单位的epoch时间)转换为PrimitiveDateTime

返回行值和行计数的总和

如何使 Postgres 优化引擎具有确定性

无法使用golang在postgresql中使用自定义类型插入/更新数据

表示 SQL 表的 Go struct

错误:分区表的唯一约束必须包括所有分区列

postgresql查询中的正则表达式不区分大小写

AWS RDS 公开访问

从 Postgres 数据库中删除所有函数

为什么 PostgreSQL 将用户和组合并为角色?

如果 PostgreSQL 数据库中存在,则删除表

如何只允许一个表的一行?

Rails ActiveRecord - 如何获取两个日期之间的记录

Postgres 外键on update和on delete选项如何工作?

如何在 postgres 模式中列出关系

如何从我的 postgresql 查询中获取最小值、中值和最大值?