Suj*_*jit 24 compression postgresql backup gzip
我需要将一个大表导出到csv文件并压缩它.
我可以使用来自postgres的COPY命令导出它 -
COPY foo_table to '/tmp/foo_table.csv' delimiters',' CSV HEADER;
然后可以使用gzip压缩它 -
gzip -c foo_table.csv > foo.gz
这种方法的问题是,在得到最终的压缩文件之前,我需要创建这个中间的csv文件,它本身就很庞大.
在csv中有导出表的方法并一步压缩文件吗?
此致,Sujit
Joe*_*ams 45
诀窍是COPY
将其输出发送到stdout,然后通过gzip管道输出:
psql -c "COPY foo_table TO stdout DELIMITER ',' CSV HEADER" \
| gzip > foo_table.csv.gz
Run Code Online (Sandbox Code Playgroud)
在@ Joey的回答中进一步扩展,下面增加了对手册中可用的更多功能的支持.
psql -c "COPY \"Foo_table\" (column1, column2) TO stdout DELIMITER ',' CSV HEADER" \
| gzip > foo_table.csv.gz
Run Code Online (Sandbox Code Playgroud)
如果你的表名中有大写字母(祸害就在你身上),你需要\"
在表名之前和之后.
我添加的第二件事是列列表.
另请注意文档:
此操作不如SQL COPY命令有效,因为所有数据都必须通过客户端/服务器连接.对于大量数据,SQL命令可能更可取.
您可以根据文档直接使用https://www.postgresql.org/docs/9.4/sql-copy.html
COPY foo_table to PROGRAM 'gzip > /tmp/foo_table.csv' delimiters',' CSV HEADER;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11440 次 |
最近记录: |