Вы не можете отказаться от CSV. либо проанализируйте CSV и создайте вставку в операторах конфликта, либо скопируйте CSV, а затем решите проблемы
у делать
" on conflict (time) do update set name , description "
но я понятия не имею, когда я использую stdin с CSV, я не знаю, какое имя равно чему? и описание равно что ...
TABLE_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()