Sql 将数据从一个数据库复制到另一个数据库-包括引用的表和标识
我有一个包含这两个表的数据库: [旧数据库][每][人]Sql 将数据从一个数据库复制到另一个数据库-包括引用的表和标识,sql,sql-server,database,Sql,Sql Server,Database,我有一个包含这两个表的数据库: [旧数据库][每][人] PersonId | FirstName | LastName | Code 2003 | 'Mike' | 'Jordan' | 2 2357 | 'Sara' | 'Jacobs' | 1 3481 | 'John' | 'Gates' | 5 PersonId | FirstName | LastName | Code [OldDb].[Sal].[Customer] Customer
PersonId | FirstName | LastName | Code
2003 | 'Mike' | 'Jordan' | 2
2357 | 'Sara' | 'Jacobs' | 1
3481 | 'John' | 'Gates' | 5
PersonId | FirstName | LastName | Code
[OldDb].[Sal].[Customer]
CustomerId | PersonId | CustomerType
830 | 2003 | 3
945 | 2357 | 2
1333 | 3481 | 2
CustomerId | PersonId | CustomerType
我的新数据库具有相同的表和架构:
[NewDb].[Per].[Person]
PersonId | FirstName | LastName | Code
2003 | 'Mike' | 'Jordan' | 2
2357 | 'Sara' | 'Jacobs' | 1
3481 | 'John' | 'Gates' | 5
PersonId | FirstName | LastName | Code
[NewDb].[Sal].[Customer]
CustomerId | PersonId | CustomerType
830 | 2003 | 3
945 | 2357 | 2
1333 | 3481 | 2
CustomerId | PersonId | CustomerType
表Person中的PersonId是identity,我可以使用此代码复制人员,但PersonId与旧数据库不同,因此我不能使用下面提到的第二个查询从customer表复制数据
INSERT INTO NewDb.per.Person
(FirstName,LastName,Code)
SELECT FirstName,LastName,Code
FROM OldDb.per.Person
INSERT INTO NewDb.Sal.Customer
(PersonId,CustomerType)
SELECT PersonId,CustomerType
FROM OldDb.Sal.Customer
现在我需要一个查询,以便将两个表的数据复制到新的数据库中
任何帮助都是很大的帮助
谢谢。您的新数据库是空的,如果您想保留旧的
PersonId
,您可以使用设置身份\u在
SET IDENTITY_INSERT NewDb.per.Person ON -- then you could use personId in Insert
INSERT INTO NewDb.per.Person
(PersonId, FirstName,LastName,Code)
SELECT PersonId, FirstName,LastName,Code
FROM OldDb.per.Person
SET IDENTITY_INSERT NewDb.per.Person OFF -- remember set it off after insert
-- then insert new Customer without conflict
INSERT INTO NewDb.Sal.Customer
(PersonId,CustomerType)
SELECT PersonId,CustomerType
FROM OldDb.Sal.Custome
参考链接:
如果您想要新的PersonId
自动递增,您可以这样做:
----CREATE `OldPersonId` column in your NewDb.per.Person
INSERT INTO NewDb.per.Person
(OldPersonId, FirstName,LastName,Code)
SELECT PersonId, FirstName,LastName,Code
FROM OldDb.per.Person
-- You could insert you new customer Inner join by `OldPersonId` Column
INSERT INTO NewDb.Sal.Customer
(PersonId,CustomerType)
SELECT np.PersonId,CustomerType
FROM OldDb.Sal.Customer oc
INNER JOIN NewDb.per.Person np ON oc.PersonId = np.OldPersonId
-----DELETE `OldPersonId` column in NewDb.per.Person
您的新数据库是空的,如果您想保留旧的PersonId
,您可以使用设置标识\u插入新的db.per.Person ON
SET IDENTITY_INSERT NewDb.per.Person ON -- then you could use personId in Insert
INSERT INTO NewDb.per.Person
(PersonId, FirstName,LastName,Code)
SELECT PersonId, FirstName,LastName,Code
FROM OldDb.per.Person
SET IDENTITY_INSERT NewDb.per.Person OFF -- remember set it off after insert
-- then insert new Customer without conflict
INSERT INTO NewDb.Sal.Customer
(PersonId,CustomerType)
SELECT PersonId,CustomerType
FROM OldDb.Sal.Custome
参考链接:
如果您想要新的PersonId
自动递增,您可以这样做:
----CREATE `OldPersonId` column in your NewDb.per.Person
INSERT INTO NewDb.per.Person
(OldPersonId, FirstName,LastName,Code)
SELECT PersonId, FirstName,LastName,Code
FROM OldDb.per.Person
-- You could insert you new customer Inner join by `OldPersonId` Column
INSERT INTO NewDb.Sal.Customer
(PersonId,CustomerType)
SELECT np.PersonId,CustomerType
FROM OldDb.Sal.Customer oc
INNER JOIN NewDb.per.Person np ON oc.PersonId = np.OldPersonId
-----DELETE `OldPersonId` column in NewDb.per.Person
您的旧数据是否存在于新数据库中?您只想插入,还是同时插入和更新?NewDb为空,我想从OldDb复制所有数据。使用oldperson id
?我不关心old personId,我只希望我在NewDb中添加的personId与将插入NewDb的personId相同,表:Customer。因为当PersonId在person表中更改时。旧personId不可接受。您的旧数据是否存在于新数据库中?您只想插入,还是同时插入和更新?NewDb为空,我想从OldDb复制所有数据。使用oldperson id
?我不关心old personId,我只希望我在NewDb中添加的personId与将插入NewDb的personId相同,表:Customer。因为当PersonId在person表中更改时。老的人形是不能接受的。谢谢你,这一个为我工作。我试图处理数据库中的其他冲突。大数据库,大问题xD。谢谢你,这一个对我有用。我试图处理数据库中的其他冲突。大数据库,大问题。