在SQL Server中,从多个数据库合并表的最佳方法是什么?

时间:2010-07-09 16:10:25

标签: sql sql-server-2005 tsql

对不起,我找不到更好的问题标题。不是lemme详细描述它。

我有4个数据库 a,b,c和d 。数据库 a 的所有表格都出现在 b c d 中,并且它们具有相同的结构相同的约束(pk,fk,默认,检查)。 b c d 只有一些表格出现在 a 中。现在 a b c d 中已有一些数据。在 b c d 中,数据比 a 中的对应数据多。并且可能有 b c d 的重复数据。

现在我要做的是导出 b c d 中的所有数据并将其导入 a 。我已经有了解决方案,但我想知道做这么复杂的任务的最佳方法是什么。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用从其他数据库获取结果的联合执行Insert Into语句

Insert Into dboTableA(ID, Value)
Select ID, Value From dbo.DatabaseB.TableA
UNION AlL
Select ID, Value From dob.DatabaseC.TableA
UNION ALL
Select ID, Value From dbo.DatabaseD.TableA

答案 1 :(得分:1)

子查询中的UNION(无ALL)将删除重复项。那么Where中的IS NULL只会在Table1中插入新行。

Insert Into DatabaseA.dbo.Table1(ID, Value)
Select ID, Value
FROM (
    Select ID, Value From DatabaseB.dbo.Table1
    UNION
    Select ID, Value From DatabaseC.dbo.Table1
    UNION
    Select ID, Value From DatabaseD.dbo.Table1
    ) T
LEFT JOIN DatabaseA.dbo.Table1 S ON T.ID = S.ID 
WHERE S.ID IS NULL