【问题标题】:Importing non duplicates into SQL Server将非重复项导入 SQL Server
【发布时间】:2014-08-22 17:24:24
【问题描述】:

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

第二个数据库名为consumers,并有一个名为consumer1 的表,其列相同。两个数据库都没有 PK,但都按 first、middle、address、city、state 和 DOB 编制索引。

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

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

【问题讨论】:

  • 您的表在同一台服务器上吗?为什么要使用导入向导?
  • 是的,这是我知道的唯一方法:/
  • 好的,看来您有一些答案可以尝试——请告诉我们。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你可以使用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 将起作用,否则将两个表用作SSIS/Data Tools 包中的数据源,您可以将它们组合起来并一步删除重复项。

    【讨论】:

    • 它们在同一台服务器上。我会试一试..谢谢.. :-)
    猜你喜欢
    • 2016-08-24
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 2012-07-15
    相关资源
    最近更新 更多