【发布时间】:2020-07-01 21:38:21
【问题描述】:
我正在使用 psycopg2.copy_expert 将数据从 CSV 复制到 PostgreSQL DB。我每天都运行它,我只想插入新数据。如果数据已经存在,则不必执行任何操作。有没有办法利用 copy_expert 函数开箱即用地执行此操作,还是我自己编写他的逻辑并创建一个仅包含增量更改的新 CSV 文件?
copy_sql = """
COPY %s FROM stdin WITH CSV HEADER
DELIMITER as ','
"""
f = open(f"{file_path}", 'r', encoding="utf-8")
cur.copy_expert(sql=copy_sql % table_name, file=f)
【问题讨论】:
-
copy 不处理增量,它只是一个直接的追加。听起来你想要
upsert,你必须自己编码。似乎是一个很好的学习机会 =)
标签: python postgresql psycopg2 postgresql-9.1