SQL Server覆盖唯一约束冲突
我有两个文件,我正在通过Node JS导入SQL Server。该表具有权益工具标识符(ISIN)的唯一键SQL Server覆盖唯一约束冲突,sql,sql-server,Sql,Sql Server,我有两个文件,我正在通过Node JS导入SQL Server。该表具有权益工具标识符(ISIN)的唯一键 data1.csv和data2.csv 我首先导入data1.csv,将每一行插入数据库。在此之后,我导入了data2.csv(这些值再次插入到数据库中),其中可能包含相同的ISIN,但其相关值的优先级高于第一个文件(1000个左右的ISIN中没有多少是5个) 如果违反了唯一约束,如何使用SQL server覆盖这些值?我知道可以先上传data2.csv,但是有一些外部限制不允许我这样做
data1.csv
和data2.csv
我首先导入data1.csv,将每一行插入数据库。在此之后,我导入了data2.csv(这些值再次插入到数据库中),其中可能包含相同的ISIN,但其相关值的优先级高于第一个文件(1000个左右的ISIN中没有多少是5个)
如果违反了唯一约束,如何使用SQL server覆盖这些值?我知道可以先上传data2.csv,但是有一些外部限制不允许我这样做
如果需要其他信息,请告诉我我建议采用登台流程:
1.使用与目标表类似的架构创建临时表
2.在加载之前,从临时表中删除所有行(您可以使用truncate)
3.将文件上载到暂存表
4.将数据加载到最终的表中—在这里,您可以使用一些逻辑来仅插入新行和更新现有行。Merge命令在这样的场景中很有用
对每个源表重复步骤2到4。我建议使用暂存过程来执行此操作:
1.使用与目标表类似的架构创建临时表
2.在加载之前,从临时表中删除所有行(您可以使用truncate)
3.将文件上载到暂存表
4.将数据加载到最终的表中—在这里,您可以使用一些逻辑来仅插入新行和更新现有行。Merge命令在这样的场景中很有用
对每个源表重复步骤2到4。听起来像是您想要
merge
。听起来像是您想要merge
。我应该这样做:在merge\u条件下使用源表合并目标表,匹配时更新\u语句,不匹配时插入\u语句,不匹配时插入\u语句删除代码>?正确,这将是第4步,您只需跳过“当源不匹配时,然后删除”我应该这样做:在合并条件下使用源表合并目标表,当匹配时,然后在不匹配时更新语句,当源不匹配时插入语句,然后删除代码>?正确,这将是第4步,您只需跳过“当源不匹配时,则删除”