【问题标题】:Script to migrate data between two SQL Server databases在两个 SQL Server 数据库之间迁移数据的脚本
【发布时间】:2012-05-31 00:59:09
【问题描述】:
我有两个 SQL Server 数据库,我需要编写一个脚本将数据从数据库 A 迁移到数据库 B。两个数据库具有相同的架构。
我必须遍历表格并且对于每个表格我必须遵循这些规则:
- 如果我要迁移的项目在目标表中不存在(例如,比较是在列
Name 上进行的),那么我直接插入它。
- 如果我要迁移的项目存在于目标表中,那么我只需要更新某些列(例如,只更新
Age 和Address,但不要触及其他列)
谁能帮我写那个脚本?任何例子都足够了。非常感谢
编辑:
我只需要一张桌子的例子。不用循环,我可以单独处理每个表(因为每个表都有自己的比较列和更新列)
【问题讨论】:
标签:
sql-server-2008
data-migration
【解决方案1】:
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);
merge 语句从 SQL Server 2008 开始可用,所以你很幸运
【解决方案2】:
与其创建脚本,不如将源表以不同的名称复制到目标服务器中(需要进行更新)。
然后在 name 不存在的地方做一个简单的插入。
这里只是第 1 步的 SQL。
INSERT INTO [TableA]
SELECT Name,
XX,
XXXX
FROM TableB
WHERE NOT NAME IN(SELECT NAME
FROM TableA)