如何用pyscopg2.copy_to或copy_expert写入压缩文件?

How to write out to compressed file with pyscopg2.copy_to or copy_expert?

我见过的所有示例都将 psqlCOPY COMMAND | gzip > 'filename' 之类的东西一起使用。如果可能的话,我更愿意使用带有 psycopg2 的解决方案,并且我认为将它写出到处理数据然后写出压缩的 [=15= 的字符串缓冲区类型对象可能会很好] 文件。

我该怎么做?

psycopg 的文档说 copy_to accepts any file-like object. Thus you could simply use the gzip.open 打开一个可写的类似 gzip 文件的对象:

import gzip

with gzip.open('table-data.gz', 'wb') as gzip_file:
    cursor.copy_to(gzip_file, 'my_table')

或者,如果您喜欢以特定编码编写文本,并且在 Python 3.3+ 上,您可以使用模式 'wt' 并添加 encoding='UTF-8' 或类似于 gzip.open.