从CSV文件中的列覆盖Postgres中的列

时间:2019-05-24 09:54:07

标签: python python-3.x database postgresql postgresql-9.3

我有一张大桌子,我只想更新一列。该列的值显示在CSV文件中。我想避免将单个插入事件列,因为这将花费很长时间。我希望使用COPY之类的东西,以便可以直接将新值转储到旧值上。但是转储特定的using副本会将其附加到表的末尾,而不是覆盖它。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

建议:插入比在数据库中更新快,因此可以执行以下步骤:

  1. 将CSV加载到临时表中。 键和需要在主表中更新的列。
  2. 将主表重命名为main_temp
  3. 重新创建主表(现在没有记录)
  4. 基于主键联接main_temp和temp表,并将其插入 main(从临时表中选择特定列,而不是从主表中选择)
  5. 删除main_temp