首页 > 解决方案 > SQL Server 覆盖唯一约束冲突

问题描述

我有两个文件通过 Node JS 导入到 SQL Server。该表具有权益工具标识符 (ISIN) 的唯一键

data1.csvdata2.csv

我首先 import data1.csv 将每一行插入到数据库中。在此之后,我导入可能包含相同 ISIN 的 data2.csv(值再次插入数据库),但它的相关值比第一个文件具有更高的优先级(这些 ISIN 中的数量不多,大约 1000 个中有 5 个)。

如果违反了唯一约束,我可以用 SQL Server 做什么来覆盖这些值?我知道可以选择先上传 data2.csv,但是有一些外部约束不允许我这样做。

请告诉我是否需要其他信息

标签: sqlsql-server

解决方案


我建议使用暂存过程来执行此操作:
1. 创建一个与目标表具有相似架构的暂存表
2. 在加载之前从暂存表中删除所有行(您可以使用 truncate)
3. 将文件上传到暂存表
4. 加载您的数据进入最终表格 - 在这里您可以使用一些逻辑来仅插入新行并更新现有行。合并命令在这种情况下很有用。

对每个源表重复步骤 2 到 4。


推荐阅读