2012-07-19 191 views
0

我想加載一個混合多個數據集的平面文件。平面文件看起來像。將具有多個佈局的平面文件解析爲多個目標表?

 
1999XX9999 
2XXX99 
1999XX9999 
2XXX99 
3XXXXX999.99 
1999XX9999 

每行的第一個字符定義了行的記錄類型。我想在數據流中創建一個腳本組件並解析原始行(如下所示),並將三個輸出(1,2,3)保存到三個不同的表中。可能嗎?

 
Table1(col1, col2, col3): 
999, XX, 9999 
999, XX, 9999 
999, XX, 9999 

Table2(col1, col2): 
XXX, 99 
XXX, 99 

Table3(col1, col2): 
XXXXX, 999.99 

如果腳本組件不能執行它,SSIS中的任何其他方式?最好的解決方案是編寫一個程序將文件分成三個文件並使用SSIS加載它們?

+0

您是否需要知道第二行是否與第一行一起出現,或者是否真的是三個獨立文件交錯在一個物理文件中? – billinkc 2012-07-20 20:36:56

+0

@billinkc是的,面對他們通常是一對多的關係。 – ca9163d9 2012-07-22 03:06:00

回答

2

這是可能的,你可能應該使用腳本轉換來創建可維護的解決方案。

您將無法使用平面文件源和連接管理器將輸入文件完全解析爲列。閱讀你的線條已滿,並在腳本轉換中使用字符串函數將每行解析到所需的列中。

我們記錄分發到不同的目的地,您可以:

  1. 你的轉型定義多個輸出並使用在每一行的第一個字符的條件來確定輸出到您發送的列。
  2. 只能使用腳本轉換將行解析爲列,並使用Conditional Split Transformation將記錄在邏輯上劃分爲多個數據路徑。

這兩種方法在邏輯上相似,實現方式不同。