Jor*_*dan 4 sql-server bulkcopy identity merge
事情就是这样,我一直在为两个不同的地理区域运行相同的网站副本。该站点现在支持多币种定价,因此我想将两个站点合并在一起。
我需要合并的所有表都是基于身份的,而且愚蠢的是,数据库的每个副本中的匹配表都以相同的数字播种。
有没有办法将数据从一个数据库复制到另一个数据库,同时为复制数据提供新的标识值,这些值也反映在引用表的外键值中?
IE
Account
- Id
- Email
- FirstName
- etc
AccountImage
- Id
- Account_id
- FileName
- etc
Run Code Online (Sandbox Code Playgroud)
等等..
除非我遗漏了什么,否则您的问题不是移动数据,而是处理已经设置的身份值。如果是这种情况,那么试试这个。
只要您在添加的值上保持一致,您的所有关系都会在组合数据库中保持不变。所以例如
您有一个员工表,其当前最大 id 为 200,000,在 DB A 中为 200,000,在 DB B 中为 1,400,000。您决定将数据从 DB A 移动到 DB B,因为这意味着移动的数据更少。当您移动您的员工表时,您将 2,000,000 添加到 Employee_Id 列。
USE DatabaseB
GO
SET IDENTITY_INSERT Employee ON
INSERT INTO Employee (Employee_Id, Other_Columns)
SELECT Employee_Id + 2000000, Other_Columns
FROM DatabaseA.dbo.Employee
SET IDENTITY_INSERT Employee OFF
GO
Run Code Online (Sandbox Code Playgroud)
最后一条建议在您开始之前备份所有内容,以防您犯错:)
归档时间: |
|
查看次数: |
68328 次 |
最近记录: |