SSIS将多个平面文件转换为包含父子

时间:2017-08-18 12:25:51

标签: sql-server csv ssis

这是我在SQL Server中的表:

Table: Customer (CustNum is the PK and auto increments)

CustNum  Firstname  Lastname
123      Bob        Smith
456      John       Paton
789      Fred       Bloggs

Table: Job  (CustNum is the FK, JobNum is the PK and auto increments)

JobNum  CustNum   Item     Desc
852      123      ABCDE    Widgets
654      456      WERT     More Widgets
987      789      QWE      Mouse mat

然后,我以两种格式提供数据,格式如下

Table: Customer 

Firstname  Lastname
Bob        Smith
John       Paton
Fred       Bloggs

Table: Job

Item     Desc
ABCDE    Widgets
WERT     More Widgets
QWE      Mouse mat

我需要将客户然后将作业导入SQL表,但保持参照完整性。创建作业记录后,需要查找正确的CustNum - 我该怎么做?我从一个CS文件中找到了很多这样做的例子,但是没有从多个csv中找到。此外,没有可靠的密钥将作业行绑定到客户表 - 我不认为我将能够使用SSIS查找 - 我会吗?

2 个答案:

答案 0 :(得分:0)

您可以使用SSIS包来提供数据库。

包将看起来像

Main Package

enter image description here

enter image description here 结果客户

CustNum     Firstname  Lastname
----------- ---------- ----------
1           Bob        Smith
2           Fred       Bloggs
3           John       Paton

结果

JobNum      CustNum     Item       Desc
----------- ----------- ---------- --------------------------------------------------
1           1           ABCDE      Widgets
2           2           QWE        Mouse mat
3           3           WERT       More Widgets

怎么做:

主要任务:

  1. 向客户添加DTS

  2. 将DTS添加到作业

  3. 创建从客户到工作的流程(绿色箭头)

  4. 客户DTS

    1. 添加与客户文件的连接

    2. 添加与Customer SQL的连接

    3. 按名字,姓氏

    4. 对两个输出进行排序
    5. 配置合并连接任务,如图像 enter image description here

    6. 插入并配置条件分割,其中一个输出名为" new"和表达ISNULL(CustNum)

    7. 插入客户表

    8. 职业DTS

      1. 插入与作业文件的连接

      2. 插入与Customer表的连接

      3. 按名字,姓氏

      4. 对两个输出进行排序
      5. 像图片一样配置联接:enter image description here

      6. 插入与作业表的连接

      7. 按CustNum,Item

      8. 排序
      9. 插入并配置条件分割,其中一个输出名为" new"和表达ISNULL(JobNum)

      10. 插入职位表

答案 1 :(得分:0)

我能够更改源数据,使其显示在1个CSV文件中而不是2中。然后,我可以在SSIS中使用SQL查找功能,现在可以使用了。感谢所有发布的人。