gpt4 book ai didi

python - 从另一个 postgres 表更新一个 postgres 表

转载 作者:行者123 更新时间:2023-11-29 13:08:06 31 4
gpt4 key购买 nike

我正在使用 python(比如表 A)将批处理 csv 文件加载到 postgres。我正在使用 pandas 将数据上传到更快的 block 中。

for chunk in pd.read_csv(csv_file, sep='|',chunksize=chunk_size,low_memory=False):

现在我想根据以下规则使用 A 更新另一个表(比如表 B)

  • 如果表 A 中有任何不在表 B 中的新记录,则将其作为新记录插入表 B(基于 Id 字段)
  • 如果表 A 中存在的相同 ID 的值在表 B 中发生变化,则使用表 A 更新表 B 中的记录(我需要根据表 A 更新服务器表)

我可以使用下面的方法来做到这一点,然后遍历每一行,但是表 A 总是有大约 1,825,172 条记录,而且它变得非常慢。任何论坛成员都可以帮助加快这一速度或建议一种替代方法来实现同样的目标。

cursor.execute(sql)
records = cursor.fetchall()

for row in records:
id= 0 if row[0] is None else row[0] # Use this to match with Table B and decide insert or update
id2=0 if row[1] is None else row[1]
id2=0 if row[2] is None else row[2]

最佳答案

您可以利用 Postgres upsert 语法,例如:

insert into tableB tb (id, col1, col2)
select ta.id, ta.col1, ta.col2 from tableA ta
on conflict(id) do update
set col1 = ta.col1, col2 = ta.col2

关于python - 从另一个 postgres 表更新一个 postgres 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58542179/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com