2013-02-28 31 views
0

我收到了一个分为多个部分的文件。章节由“<sectionName>”和“012xxsectionname >”行分隔。我关心的两个部分是字段列表和实际数据。这里有一个简单的例子:SSIS文件加载的动态列表列表

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

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

回答

1

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

但是,这是一个非常多的有状态编码。由于您无法真正在SSIS 2008中调试脚本组件,因此让它发挥作用将是一件非常痛苦的事情。

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