我要做的
" on conflict (time) do update set name , description "
但是我不知道当我使用标准输入和csv时,我不知道什么名称等于什么?什么描述等于什么...
表_a:
xxx.csv:
with open('xxx/xxx.csv', 'r', encoding='utf8') as f:
sql = """
COPY table_a FROM STDIN With CSV on conflict (time)
do update set name=??, description=??;
"""
cur.copy_expert(sql, f)
conn.commit()
4条答案
按热度按时间4ngedf3f1#
在this SO post中,有两个答案(结合在一起)为成功使用
ON CONFLICT
提供了一个很好的解决方案。下面的示例使用ON CONFLICT DO NOTHING;
:用表的名称替换main_table的两个示例。
w6lpcovy2#
感谢各位大师的解答。
这就是我的解决方案。
xesrikrc3#
我已经成功地使用以下函数完成了一个批量 upsert(欢迎提出建议):
fslejnso4#
https://www.postgresql.org/docs/current/static/sql-copy.html
posterre中没有
copy ... on conflict do
语句https://www.postgresql.org/docs/current/static/sql-insert.html
仅限
insert ... on conflict do