2013-02-28 60 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中調試腳本組件,因此讓它發揮作用將是一件非常痛苦的事情。

您最好寫一個完整的自定義數據流組件。甚至編寫一個完全獨立的控制檯應用程序