2012-10-25 43 views
0

我有一個完整的CSV文件例如有6列:如何處理SSIS中更改列數的CSV文件?

Rec ID | Charge Category | Charge Type Category | Product Name | Account No | Cost 

我一直在運行SSIS這一條件沒有問題。

然而,我們發現,使用更少的列CSV文件的一個比我們有例如:

Rec ID | Charge Type Category | Product Name |Cost 

我們如何處理使用「平面文件連接管理器」連接類型是不是這個原因工作?!?!

我們需要探索的其他方法?

謝謝

回答

0

如果您只有這兩種情況,您可以創建三個文件連接。使用第一個閱讀整行並處理標題。計算其中的列數並創建兩個並行流 - 一個用於「short」格式,一個用於「long」,其中每個使用不同的連接定義。

稍微複雜一點的選擇是在數據流的腳本轉換中完成所有這些。讓您的CSV文件逐行讀取一個文件並將其傳遞給腳本,該腳本解析行並將現有列值分配給定義的所有可能輸出的子集。 (:SSIS split string與此類似)

溶液的主要部分包括:

  1. 平面文件連接,其通過讀取文件線路輸出應在所有可能的列配置成這樣的方式來定義線(設置字段分隔符來例如#$#的一個不存在的組合)和

  2. 素文字任務在變換模式與具有單個輸入(FullLine)和所有可能的輸出定義爲:

    enter image description here

在腳本中,你可以使用這裏描述的美麗概念:http://dwbi1.wordpress.com/2011/02/27/ssis-importing-files-read-the-first-n-rows/

寫這一切之後,我剛剛意識到腳本任務源很可能是做的最簡單方法,將所有可能的列定義爲輸出的概念相同。

+0

不幸的是,我們需要處理列數的方差。這是否意味着我們需要在腳本任務中完成呢? – dcpartners

+0

答案隨第二段擴大。 – milivojeviCH

+0

您是否將此作爲Script Component引用,但是您選擇了Transformation選項?是不是你需要指向一個文件,那就是我們遇到的問題......記住它是一個動態數量的列(以CSV格式)。 – dcpartners