Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 用于在两个SQL Server数据库之间迁移数据的脚本_Sql Server 2008_Data Migration - Fatal编程技术网

Sql server 2008 用于在两个SQL Server数据库之间迁移数据的脚本

Sql server 2008 用于在两个SQL Server数据库之间迁移数据的脚本,sql-server-2008,data-migration,Sql Server 2008,Data Migration,我有两个SQL Server数据库,我需要编写一个脚本将数据从数据库a迁移到数据库B。这两个数据库具有相同的模式 我必须循环浏览表格,对于每个表格,我必须遵循以下规则: 如果目标表中不存在我要迁移的项(例如,在名称列上进行比较),则直接插入它 如果目标表中存在我要迁移的项,则我只需要更新某些列(例如,仅更新Age和Address,但不接触其他列) 有人能帮我写剧本吗?任何例子都可以。非常感谢 编辑: 我只需要一张桌子的例子。无需循环,我可以分别处理每个表(因为每个表都有自己的比较列和更新列)ME

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

我必须循环浏览表格,对于每个表格,我必须遵循以下规则:

  • 如果目标表中不存在我要迁移的项(例如,在
    名称
    列上进行比较),则直接插入它
  • 如果目标表中存在我要迁移的项,则我只需要更新某些列(例如,仅更新
    Age
    Address
    ,但不接触其他列)
  • 有人能帮我写剧本吗?任何例子都可以。非常感谢

    编辑:


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

    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开始就可用,因此您很幸运

    没有创建脚本,为什么不以其他名称将源表复制到目标服务器中(需要进行更新)

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

    以下是仅用于步骤1的SQL

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

    如果这些表在不同的数据库中呢?您好。支持跨不同数据库合并,只需使用完全限定的数据库名称即可。更多信息: