【问题标题】:SQL Server Data Import with a "lookup"带有“查找”的 SQL Server 数据导入
【发布时间】:2010-06-15 21:51:47
【问题描述】:

我有两个数据库,在两个单独的 SQL Server 上(试图合并两者)。

这是我的设置,我正在尝试从 Server1:Orders 表导入 Server2:Orders 表。

Server1
    Database1
        Orders(ID, CustomerName, DateOrdered)

Server2
    Database2
        Customers(ID, Name)
        Orders(ID, CustomerID, DateOrdered)

如您所见,Database1 有去规范化的数据,而 Database2 有相同的数据,经过适当的规范化。

我遇到的问题是进行 SQL Server 导入。在 Database2 中,Customers 表已填充,Server1.Database1.Orders.CustomerName 和 Server2.Database2.Customers.Name 之间将匹配。

我希望在导入期间根据导入数据中 CustomerName 字段的值“查找”Customer.ID 字段,然后对我的新订单进行相应的插入表。

我能够通过 SSMS 连接到两台服务器,我正在尝试通过“SQL Server Native Client 10”作为数据源进行导入。

更新

看来我不能做一个 SSIS“包”所以我做的是这样的:

将 Database1.Orders 移至 Database2.OrdersOLD。

我现在正在寻找一个查询来在 Database2.Orders 中创建新的订单记录并插入正确查找的 CustomerID,因为现在所有三个表都在同一个数据库中,这可能吗?

【问题讨论】:

    标签: sql sql-server sql-server-2008 import


    【解决方案1】:

    使用 SSIS,特别是 Lookup Transformation。请参阅 MSDN 文章链接中的链接博客和教程。

    【讨论】:

    • 如何以及在哪里创建其中之一?也许我遗漏了一些东西,但我不知道如何创建一个。
    • 您将不得不创建一个适当的 SSIS 包,对其进行测试然后运行它。这不是 SSMS 中的魔法向导点击。
    【解决方案2】:

    我认为可以这样做:

    SELECT O1.ID, C2.ID, O1.DateOrdered
        INTO Server2.Database2.Orders 
        FROM Server1.Database1.Orders O1
        INNER JOIN Server2.Database2.Customers C2 ON C2.Name = O1.CustomerName
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多