postgresql - 将数据从 CSV 复制到 postgres 忽略唯一键违规
问题描述
我正在尝试使用 COPY SQL 命令将 CSV 中的数据批量插入 PostgreSQL 数据库。通常 CSV 文件包含最少 10,000 行到最多 100 万行。此 CSV 文件包含 queryId 作为列之一,此 queryId 是我尝试批量插入的表的主键。由于某种原因,CSV 文件可能包含已插入的 queryId。有什么方法可以通过忽略数据库抛出的唯一键违规异常来批量插入 CSV 数据,或者可以通过 COPY 处理异常。
我有一种天真的方法,即列出 CSV 文件中存在的所有 queryId,并在数据库中查询与 queryId 匹配的现有记录。一旦我得到结果,删除 CSV 中已经插入数据库的那些行。但由于行在 10 万范围内,我怀疑这种方法是否可行。
注意:从设计的角度来看,删除数据库中已经存在的 queryId 记录,然后批量插入 CSV 数据并不是我要寻找的。
解决方案
推荐阅读
- javascript - 输入字段在 React 中失去焦点
- matlab - 当元素类似于 '(p,q)' 时查找 MATLAB 元胞数组的唯一元素
- android - 与匿名内部类相比,Kotlin lambda 的表现如何?
- java - 使用类和索引单击元素时出现问题
- javascript - 仅在选中复选框时将输入文本转换为大写
- mysql - SQL查询以透视下表中的数据
- mysql - JPA 从视图中选择
- python - 无法激活 python virtualenv 但没有出现错误
- common-lisp - 如何测试编译的函数?
- database - 在 Windows 10 上运行 Access 数据库时收到错误