2010-10-05 81 views
1

我有一個小問題(我認爲...) 我正在加載平面文件(csv),我想爲數據流添加一個rownumber。使用RowNumber轉換對單個輸出路徑(源和錯誤)都有效。但是如果你想在兩個路徑中使用相同的rownumber來跟蹤錯誤發生的位置(在文件中)。我現在已經抓了我的頭,所以我只是把它扔在這裏,因爲我敢肯定其他人已經在這一個崩潰...SSIS在平面文件源上的兩個輸出的常見rownumber

我已經嘗試了腳本轉換,似乎工作了一段時間但它會掛起負載。

任何有關如何解決這個問題的建議非常感謝。

回答

1

如果我正確理解你,用數據流的腳本組件動態生成數字對你來說不是問題。

我會建議你的是採用了穩定的ETL過程從文件即將以下理念:

  1. 在連接器從不投什麼,只是導入的字段,因爲他們將獲得最大的lenght的nvarchars。
  2. 投射和控制每列到您的規格。
  3. 如果一行無法讀取,您將不知道索引,但您會知道該文件格式不正確(在我的經驗中,對於一半傳輸的文件極爲罕見),並且它應該被拒絕。

文件加載過程的一部分的快速截圖顯示拒絕(分配row_id後)如何工作(link to dataflow image)。爲此,您可以添加更多無數檢查(重複...),甚至可以爲已加載的文件存儲庫以檢查拒絕和您可能想要控制的任何其他內容(Link to control flow image)。

在我的一些進程中,我甚至使用了一個平面文件連接器,並將每行作爲批量文本導入,然後使用中間腳本組件將其拆分爲列,從而允許在文件中使用不同版本的列。

無論如何,對不起,不要更詳細(由於我的地位,我不能添加更多的鏈接或任何圖像),但我希望你瞭解這個概念。

Regards,

Francisco。