在两个SQL Server数据库之间迁移数据的脚本

时间:2012-05-24 12:31:19

标签: sql-server-2008 data-migration

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

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

  1. 如果目标表中不存在我正在迁移的项目(例如,在列Name上进行比较),那么我将其直接插入。
  2. 如果我正在迁移的项目存在于目标表中,那么我只需要更新某些列(例如,只更新AgeAddress但不要触及其他列)
  3. 任何人都可以帮我处理这个剧本吗?任何例子都足够了。非常感谢

    修改

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

2 个答案:

答案 0 :(得分:7)

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开始提供合并声明,因此您很幸运

答案 1 :(得分:0)

不是创建脚本而是为什么不将源表以不同的名称复制到目标服务器中(需要进行更新)。

然后只做一个名称不存在的简单插入。

以下是仅适用于步骤1的SQL。

INSERT INTO [TableA]
SELECT Name,
       XX,
       XXXX
FROM   TableB
WHERE  NOT NAME IN(SELECT NAME
                   FROM   TableA)