SSIS文件加载的动态列列表

时间:2013-02-28 19:16:32

标签: sql-server-2008 ssis

我收到的文件分为几个部分。部分由“start-of-lt; sectionName>”分隔。和“end-of-lt; sectionname>”线。我关注的两个部分是字段列表和实际数据。这是一个简短的例子:

start-of-fields
a
b
c
end-of-fields
start-of-data
1|2|3
2|3|4
end-of-data

我的问题在于给定文件可能没有所有字段。 所具有的字段列在字段部分中。数据流任务中的脚本组件中是否有一种方法可以解析存在哪些列,然后相应地解析数据部分?我目前有一个工作脚本组件(C#)忽略字段部分,并假设所有列都在那里。我在父类中注意到我的任务的输出缓冲区中有一个名为BufferColumnIndexes的成员,但它受到保护,所以我无法从我的脚本中获取它。

1 个答案:

答案 0 :(得分:1)

当然,脚本组件可以逐行读取输入文件。当它找到start-of-fields行时,它可以构建一个很好的小列标题数组,当它到达end-of-fields行时停止。然后,它可以读取start-of-dataend-of-data行之间的每一行,解析出值,并使用提供的值和默认值的任何值向输出缓冲区添加一行。

然而,这是一个非常多的有状态编码。由于您无法在SSIS 2008中实际调试脚本组件,因此将其运行将是一件非常痛苦的事情。

编写完整的自定义数据流组件可能会更好。甚至可以编写一个完全独立的控制台应用程序。