如何将数据从一个数据库表迁移到另一个SQL?

时间:2013-03-28 14:58:05

标签: sql sql-server-2008-r2

我对这整个SQL数据库迁移工作都很陌生,我已经准备好学习了。

我有两个不同的数据库,它们都有一个用户表,在一个目标数据库中名为HtUser,在源数据库中名为HTUser

我想创建一个脚本,该脚本从源数据库中的firstName, lastName, email和我的目标数据库中的特定列复制数据FirstName, LastName, Email和“特殊字段”{{ 1}}包含来自UserName的ch +两个字母和来自firstName的三个字母。

lastName

3 个答案:

答案 0 :(得分:6)

假设您有2个名为db1和db2的数据库,这可能会有效。

INSERT INTO db2.dbo.HTUser (FirstName, LastName, Email, UserName)
SELECT firstName, lastName, email, 'CH' + LEFT(firstName, 2) + LEFT(lastName, 3) 
FROM db1.dbo.HtUser U1
    LEFT JOIN db2.dbo.HTUser U2 ON U1.firstName = U2.FirstName 
        AND U1.lastName = U2.LastName 
        AND U1.email = U2.Email
WHERE U2.firstName IS NULL
    AND U2.lastName IS NULL
    AND U2.email IS NULL;

此版本将复制db2.dbo.HtUer中db2.dbo.HTUser中不存在的用户。

使用首选NOT EXISTS的版本(感谢@AaronBertrand!):

INSERT INTO db2.dbo.HTUser (FirstName, LastName, Email, UserName)
SELECT firstName, lastName, email, 'CH' + LEFT(firstName, 2) + LEFT(lastName, 3) 
FROM db1.dbo.HtUser U1
WHERE NOT EXISTS 
    (
        SELECT 1
        FROM db2.dbo.HTUser U2 
        WHERE U2.firstName = U1.FirstName 
            AND U2.lastName = U1.LastName 
            AND U2.email = U1.Email
    );

答案 1 :(得分:1)

您可以对此使用INSERT INTO...SELECT声明。

INSERT  INTO db1.HtUser (firstName, lastName, email, [username])
SELECT  firstName, lastName, email,
        'ch' + SUBSTRING(firstName,1,2) + SUBSTRING(lastname,1,3)
FROM    db2.HtUser 

答案 2 :(得分:1)

您是否研究过SQL Server 2005及其附带的TABLEDIFF实用程序?可以找到好的示例herehere

tablediff.exe utility features

Comparison between two tables from SQL Server instance. 
Row by row fast comparision. 
**Perform column level comparison.** 
Easily generate change script between production and development SQL server instances.
Log result can be captured as output file or database table.
Location:

tablediff.exe is available on SQL Server instance at 
"<DriveLetter>:\Program Files\Microsoft SQL Server\90\COM\TableDiff.exe"

 <DriveLetter> is the hard drive where SQL Server instance is installed.