使用可能重复的数据将数据插入SQL Server数据库

时间:2016-06-08 22:03:35

标签: sql sql-server

我在不同的服务器上有两个数据库,它们有一个名为com.fasterxml.jackson.databind.JsonMappingException: Could not find creator property with name 'id' (in class org.apache.spark.rdd.RDDOperationScope) at [Source: {"id":"4","name":"first"}; line: 1, column: 1]的表。数据大致相同,但我想确保两个表都有相同的数据。我一直在使用SQL Server 2016年6月将数据从一个表导出到另一个表,但我得到的错误是:

  

违反PRIMARY KEY约束''。无法在对象A中插入重复键

     

重复键值为“此处有些文字”

我知道我可以删除表并重新插入行,但这很麻烦且非常糟糕。对我来说,更新第二个数据库中的数据的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

将服务器添加为链接服务器并使用以下语句。

在表A中添加来自服务B表A的行。

INSERT INTO dbo.A (Col1 , Col2 , Col3 , ....)
SELECT Col1 , Col2 , Col3 , ....
FROM [LinkedServerB].[DBName].[dbo].[A] A 
WHERE NOT EXISTS ( SELECT 1 FROM dbo.A 
                   WHERE A.PK_Column = PK_Column)

然后在服务器B上使用相同的查询来添加服务器A中的行

在表A中添加来自服务B表A的行。

INSERT INTO dbo.A (Col1 , Col2 , Col3 , ....)
SELECT Col1 , Col2 , Col3 , ....
FROM [LinkedServerA].[DBName].[dbo].[A] A 
WHERE NOT EXISTS ( SELECT 1 FROM dbo.A 
                   WHERE A.PK_Column = PK_Column)

答案 1 :(得分:1)

好的,如果您不能使用链接服务器,可以将数据复制到空的临时表中。然后运行类似的insert语句,但使用登台表而不是链接表