将固定宽度文件源中的多行合并为一行

时间:2017-09-13 17:53:55

标签: sql ssis

我正在使用我见过的最疯狂的文件格式。它是固定宽度,并包含多个记录类型(从某种意义上说,每行可能有不同的列和宽度)。有一个文件头,预告片,然后是静态行数,放在一起组成一条记录。我遇到的问题是,行中没有任何内容告诉您它们属于除排序顺序和行号属性之外的同一记录。

示例:

001 David          Wellingsworth    Mr.
002 312-555-5555      3060 W Maple St.           Chicago
001 Jimothy        Bogendath        Dr.
002 563-555-5432      123 Main St.               Davenport

因此,我的问题是:是否可以在不使用脚本组件的情况下处理这样的文件?我理解如何处理固定宽度文件中的不同记录类型的基本概念(利用条件分割和子串),但是如果行没有,我无法通过如何在分割后连接所有这些数据有标识符。

如果有帮助,我的问题基本上是this previous question,但反之亦然。

1 个答案:

答案 0 :(得分:1)

可能但有一些工作。我使用过这样的数据,这是我们解决问题的方法。

  1. 您需要构建一个表格,为他们提供自己独特的RecordID
  2. 为您的文件创建另一个表以记录您的文件名和唯一的fileID
  3. 将您的fileID链接到RecordID,以便您知道每条记录来自哪个文件
  4. 构建链接到每个唯一RecordID的所有子表
  5. 以这种方式构建表格将为您提供:

    1. 每行的唯一记录ID(尽管文件中可能有重复,但在表格中它们是唯一的。)
    2. 知道每条记录来自哪个文件。