【问题标题】:SSIS Insert records based on field values from CSV and SQL Server data sourcesSSIS 根据来自 CSV 和 SQL Server 数据源的字段值插入记录
【发布时间】:2015-01-11 09:02:31
【问题描述】:

我想知道是否可以通过 SSIS 完成以下场景。

我想根据 2 个数据源中的值向 SQL Server 插入记录:1 个是 CSV 文件,1 个是 SQL Server。例如,2 个数据源,一个具有名为 Customer ID 的列,另一个来自 SQL Server,具有名为 Task ID 和 Task Name 的列。我想将记录插入 SQL Server,其中包含名为 Customer Task ID、Customer ID、Task ID 和 Task Name 的列。

我尝试了几种方法,但没有任何运气,方法是从源 1(CSV 文件)中捕获客户 ID,例如 C5000,然后与源 2(SQL Server)中的任务 ID 和任务名称列合并,然后插入合并的记录到目标(SQL Server),然后重复执行相同的任务以插入记录,直到最后一个客户记录。我在下面总结了源样本和目标样本。任何反馈将不胜感激!

来源 1(CSV 文件)--
第 1 行包含客户 ID 列:C5000
第 2 行包含客户 ID 列:C5001

来源 2(SQL Server 上名为 Task 的表)--
第 1 行包含任务 ID 列:T2000 和任务名称列:计划
第 2 行包含任务 ID 列:T2001 和任务名称列:审核

目标(SQL Server 上名为 Customer Task 的表)--
第 1 行包含客户任务 ID 列:CT0001,客户 ID 列:C5000,任务 ID 列:T2000,任务名称列:计划
第 2 行包含客户任务 ID 列:CT0002,客户 ID 列:C5000,任务 ID 列:T2001,任务名称列:审核
第 3 行包含客户任务 ID 列:CT0003,客户 ID 列:C5001,任务 ID 列:T2000,任务名称列:计划
第 4 行包含客户任务 ID 列:CT0004,客户 ID 列:C5001,任务 ID 列:T2001,任务名称列:Review

【问题讨论】:

    标签: sql-server csv ssis merge lookup


    【解决方案1】:

    使用Cross Join 来做到这一点

    INSERT INTO Customer_Task
                (Customer_Task_ID,
                 Customer_ID,
                 Task_ID,
                 Task_name)
    SELECT 'CT' + RIGHT('000')
           + CONVERT(VARCHAR(10), Row_number() OVER(ORDER BY (SELECT NULL))),
           Customer_ID,
           Task_ID,
           Task_name
    FROM   Customer
           CROSS JOIN Task 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      • 2018-03-30
      相关资源
      最近更新 更多