【问题标题】:Script to migrate data between two SQL Server databases在两个 SQL Server 数据库之间迁移数据的脚本
【发布时间】:2012-05-31 00:59:09
【问题描述】:

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

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

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

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

编辑:

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

【问题讨论】:

    标签: 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 开始可用,所以你很幸运

    【讨论】:

    • 如果表在不同的数据库中怎么办?
    • 你好优素福。支持跨不同数据库合并,只需使用完全限定的数据库名称。更多信息:mikebosch.net/2010/08/…
    【解决方案2】:

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

    然后在 name 不存在的地方做一个简单的插入。

    这里只是第 1 步的 SQL。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多