我正在两个数据库之间传输数据。
我的旧数据库有一个名为Customers
的表,并且其中有一个名为Email
的列。
我的新数据库有一个名为Account
的新表,该表与旧的Customers
表有关系。
因此,我想将所有客户从旧数据库转移到新数据库。将电子邮件与该表分开,然后插入到新表中。示例:
我的旧数据库表称为Customers
:
ID, Email, First Name, Last Name
我的新数据库表名为Customers
:
ID, Account ID, First Name, Last Name
我的新数据库表名为Account
:
ID, Email, Password
我已经将Customers
转移到我的新数据库中,并将所有来自客户的Emails
插入到Account
表中。
但是现在,我想从新的Customers
表中更新“帐户ID”列,以将所有客户与其帐户相关联。
INSERT INTO dbo.Account (Email)
SELECT a.EmailAddress
FROM AdventureWorks_Test.dbo.Customer a
我该怎么做?
谢谢。
答案 0 :(得分:2)
这里最好的方法是保留ID供以后映射。您可以为此使用临时表。
CREATE TABLE #MigrationMapper
( OldId INT,
NewId INT )
然后,您可以在将数据插入新表时填充该表。您可以使用OUTPUT
子句来获取插入的ID
MERGE INTO Account AS T
USING AdventureWorks_Test.dbo.Customer s
ON t.Id=a.Id+ NULL --To insert all records
WHEN NOT MATCHED THEN
INSERT ( Email)
VALUES ( s.EmailAddress)
OUTPUT s.Id, INSERTED.ID INTO #MigrationMapper(OldId,NewId);
因此,通过现在加入临时表,您知道哪个电子邮件地址与新客户行一起出现