python - 从 csv 文件中的列覆盖 Postgres 中的列
问题描述
我有一张大表,我希望只更新一列。该列的值存在于 CSV 文件中。我想避免单个插入事件列,因为这需要很长时间。我更喜欢 COPY 之类的东西,这样我就可以直接将新值转储到旧值上。但是转储特定的 using 副本会将其附加到表的末尾而不是覆盖它。
有什么建议么?
解决方案
建议:插入比在数据库中更新要快,因此可以按照以下步骤操作:
- 将 CSV 加载到临时表。并非所有列都需要主键和需要在主表中更新的列。
- 将主表重命名为 main_temp
- 重新创建主表(现在没有记录)
- 根据主键加入 main_temp 和临时表并插入主表(从临时表中选择特定列,而不是从主表中选择特定列)
- 删除 main_temp
推荐阅读
- c# - 我无法从 C#.NET 中的数据库获取 Null 值
- reactjs - 更改数组中的元素后映射不是函数
- javascript - 如何获取点击按钮的相关值?
- javascript - 显示加载页面,直到我得到服务器的响应
- laravel - 无法从 Laravel 6 连接到 Gmail SMTP
- python - Keras 应用程序的多图像输入
- python - 如何解析来自 api 的投注赔率数据以创建 pandas 数据框?
- swift - 在 tableView(:didSelectRowAt) 中为自定义表格单元格 UILabel 设置值
- javascript - Bootstrap 切换折叠未知 id
- vagrant - Laravel Homestead:VBoxManage:错误:详细信息:代码 NS_ERROR_FAILURE (0x80004005),组件 MachineWrap,接口 IMachine