0

我得到了一个分成几部分的文件。节由“start-of-<sectionName>”和“end-of-<sectionname>”行分隔。我关心的两个部分是字段列表和实际数据。这是一个简短的例子:

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

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

4

1 回答 1

1

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

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

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

于 2013-03-05T18:33:20.430 回答