首页 > 解决方案 > 将数据从 CSV 复制到 postgres 忽略唯一键违规

问题描述

我正在尝试使用 COPY SQL 命令将 CSV 中的数据批量插入 PostgreSQL 数据库。通常 CSV 文件包含最少 10,000 行到最多 100 万行。此 CSV 文件包含 queryId 作为列之一,此 queryId 是我尝试批量插入的表的主键。由于某种原因,CSV 文件可能包含已插入的 queryId。有什么方法可以通过忽略数据库抛出的唯一键违规异常来批量插入 CSV 数据,或者可以通过 COPY 处理异常。

我有一种天真的方法,即列出 CSV 文件中存在的所有 queryId,并在数据库中查询与 queryId 匹配的现有记录。一旦我得到结果,删除 CSV 中已经插入数据库的那些行。但由于行在 10 万范围内,我怀疑这种方法是否可行。

注意:从设计的角度来看,删除数据库中已经存在的 queryId 记录,然后批量插入 CSV 数据并不是我要寻找的。

标签: postgresqlcsvnodejs-streamfast-csv

解决方案


推荐阅读