4

我有两个 SQL Server 数据库,我需要编写一个脚本来将数据从数据库 A 迁移到数据库 B。两个数据库具有相同的架构。

我必须遍历表格,并且对于每个表格,我必须遵循这些规则:

  1. 如果我要迁移的项目在目标表中不存在(例如,比较是在列上进行的Name),那么我直接插入它。
  2. 如果我要迁移的项目存在于目标表中,那么我只需要更新某些列(例如,只更新Age而不Address触及其他列)

谁能帮我写那个脚本?任何例子都足够了。非常感谢

编辑:

我只需要一张桌子的例子。不用循环,我可以单独处理每个表(因为每个表都有自己的比较列和更新列)

4

2 回答 2

8

MERGE 语句看起来可以在这里为您提供帮助。一个例子:

MERGE StudentTotalMarks AS stm
USING (SELECT StudentID,StudentName FROM StudentDetails) AS sd
ON stm.StudentID = sd.StudentID
WHEN MATCHED AND stm.StudentMarks > 250 THEN DELETE
WHEN MATCHED THEN UPDATE SET stm.StudentMarks = stm.StudentMarks + 25
WHEN NOT MATCHED THEN
INSERT(StudentID,StudentMarks)
VALUES(sd.StudentID,25);

合并语句自 SQL Server 2008 起可用,所以你很幸运

于 2012-05-24T12:36:04.037 回答
0

与其创建脚本,不如将源表以不同的名称复制到目标服务器中(需要进行更新)。

然后只需在名称不存在的地方进行简单的插入即可。

这里仅是第 1 步的 SQL。

INSERT INTO [TableA]
SELECT Name,
       XX,
       XXXX
FROM   TableB
WHERE  NOT NAME IN(SELECT NAME
                   FROM   TableA) 
于 2012-05-24T12:39:50.437 回答