Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server覆盖唯一约束冲突_Sql_Sql Server - Fatal编程技术网

SQL Server覆盖唯一约束冲突

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,但是有一些外部限制不允许我这样做

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

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步,您只需跳过“当源不匹配时,则删除”