2016-08-24 7 views
2

我加載CSV文件的一大套(十萬10S)集成到一個臨時SQL Server表,使用標準的SSIS方法。SSIS:添加不存在的列到CSV源

絕大多數源的CSV文件具有相同的柱結構(順序,一組列,數據類型)。大約有140列一起。但是,在某些(< 1%)的情況下,源文件將缺少一些列(我確切知道它們是哪些列,並且有三種可能的缺失列組合)。這是設計的,即這是一個有效的業務場景(meh)。

我可以以某種方式創建一個源CSV連接「虛擬」列(用NULL填充/空/空值),如果(且僅當)該列不在物理源CSV文件存在嗎?

我知道我可以用C#腳本組件讀取CSV標頭,並創建多個源連接,並根據某些列的存在(或缺少)重新指向正確的數據流,但我希望更「優雅「解決方案,只有單個CSV數據源」智能「足以」人爲地「添加源文件中缺少的空白列。

爲簡單起見,我們假設該整列集是:

ID;C1;C2;C3 

這C3缺少偶爾即一些CSV文件:

ID;C1;C2 

任何提示的歡迎。

回答

0

沒有,沒有「智能」 CSV數據內置在SSIS源。

您當然需要使用腳本組件,而不是在數據流之外使用腳本任務來將控制流引導到正確的數據流,您可以簡單地創建一個包含腳本組件的數據流作爲數據資源。腳本組件讀取當前正在導入的CSV,並且如果缺少該列,則會爲其提供NULL或默認值。

+0

似乎合法的,雖然我從來沒有創建了一個腳本組件作爲數據源。總有第一次 - 我會試一試。謝謝。 –