将非重复项导入SQL Server

时间:2014-08-22 17:24:24

标签: sql sql-server database sql-server-2012

问题...我有两个数据库,让我们说第一个数据库名为people1并包含一个名为PF1的表,其中包含first, last, middle, address, city, state, zip, phone, DOB列。

第二个数据库名为consumers,并且有一个名为consumer1的表,其列相同。两个数据库都没有PK,但在第一,中间,地址,城市,州和DOB上编制索引。

我希望第一个数据库成为包含来自两个数据库的组合数据的主数据库,但我不想导入任何重复数据,重复值与索引列的索引相同两个数据库。

我是否可以通过常规GUI导入程序运行以适应这种情况,或者我必须将所有内容转储到一起并将其作为一个整体进行重复数据删除。使用SQL Server 2012也...谢谢。另外,tsql的例子很棒......

2 个答案:

答案 0 :(得分:1)

使用“导入数据”向导,选择“编写查询以指定数据传输” 此时,您可以合并两个数据库中的两个表,并在导入数据之前删除查询中的重复项

答案 1 :(得分:0)

您可以使用EXISTS来限制INSERT

INSERT INTO people1.dbo.PF1
SELECT *
FROM consumers.dbo.consumer1 a
WHERE NOT EXISTS (SELECT *
                  FROM people1.dbo.PF1 b
                  WHERE a.first = b.first
                    AND a.middle = b.middle
                    AND a.address = b.address
                    AND a.city = b.city
                    AND a.state = b.state
                    AND a.DOB = b.DOB)

如果数据库位于无法链接的不同服务器上,则暂时导入整个表然后执行上述INSERT将起作用,否则将两个表用作{{1}中的数据源你可以将它们组合起来并一步删除重复项。