一尘不染

如何在保持外键关系/引用完整性的同时在多个数据库表之间移动数据?

sql

我正在尝试找出将多个数据库中有价值的数据表移动/合并到一个表中的最佳方法。

我有一个类似于以下内容的架构:

CREATE TABLE Products(
    ProductID int IDENTITY(1,1) NOT NULL,
    Name varchar(250) NOT NULL,
    Description varchar(1000) NOT NULL,
    ImageID int NULL
)

CREATE TABLE Images (
    ImageID int IDENTITY(1,1) NOT NULL,
    ImageData image NOT NULL
)

使用产品的ImageID的外键到图像的ImageID。

因此,将这些表中包含的数据从多个源数据库移动到具有相同架构的一个目标数据库的最佳方法是什么。我的主要问题是维护产品及其各自图像之间的链接。


阅读 201

收藏
2021-05-30

共1个答案

一尘不染

在SQL Server中,可以启用身份插入:

SET IDENTITY_INSERT NewTable ON
<insert queries here>
SET IDENTITY_INSERT NewTable OFF

启用意识形态插入后,您可以像其他任何列一样在标识列中插入一个值。这使您可以仅复制表,例如从链接的服务器中复制表:

insert into newdb.dbo.NewTable
select *
from oldserver.olddb.dbo.OldTable
2021-05-30