psycopg2 copy_to table 的一部分

psycopg2 copy_to part of table

有一个 copy_to 可以将 table 数据复制到文件中,例如:

cursor.copy_to(fp, 'table_name')

但我不需要复制所有 table 数据,只需复制其中的一部分。 所以当我这样做时:

cursor.execute(query)
cursor.copy_to(fp, 'table_name')

它仍然复制整个 table。 有没有办法从查询中复制数据?

使用 cursor.copy_expert(),将您的查询作为 COPY 命令的参数,例如:

sql = """
    copy (
        select * 
        from my_table 
        where id < 5 
        order by id
    ) to stdout
"""

with open('/data/my_file.txt', 'w') as fp:
    cursor.copy_expert(sql, fp)
    

另请参阅 Postgres COPY command.