我的SSIS程序讀取.csv文件的輸入。SSIS從平面文件中讀取問題
該文件有大約60,000行。而且我的SSIS包在讀取過程中失敗了,說由於潛在的數據丟失,無法轉換某個列。
現在,我確定大多數行都是正確的。正如我試圖粘貼文件的隨機子集和SSIS讀取正常。
但我找不出一種方法來確定我的軟件包在哪一行失敗。
我已經花了2個月在這個問題上,有什麼建議嗎?
我的SSIS程序讀取.csv文件的輸入。SSIS從平面文件中讀取問題
該文件有大約60,000行。而且我的SSIS包在讀取過程中失敗了,說由於潛在的數據丟失,無法轉換某個列。
現在,我確定大多數行都是正確的。正如我試圖粘貼文件的隨機子集和SSIS讀取正常。
但我找不出一種方法來確定我的軟件包在哪一行失敗。
我已經花了2個月在這個問題上,有什麼建議嗎?
你可以找到16個迭代的第一個罪魁禍首。這裏是一個大腦+布朗方法:
第一:支持一切。在安全的地方複製備份。對不起,明顯的狀態,但我最近被咬傷,而我知道更好。
帶有60K記錄的文件 - 我們稱之爲您的基本文件。
你將不得不在16次迭代的違規記錄。 (60k,30k,15k,7500,3750,1875,937,468,234,117,58,29,14,7,3,1)
打開所有內容並重新運行SSIS包。您應該在基本文件中記錄有問題的記錄,並在日誌中記錄確切的數據點。
首先,簡化問題。創建一個僅使用此平面文件源和一些虛擬目標的數據流任務。注意失敗。
打開日誌中的所有日誌和頁面。關閉你發現的記錄區顯然毫無價值,然後再運行一次。
此外,您應該配置源和/或目的地的錯誤輸出:無論哪個給您提供錯誤。將錯誤的行發送到您可以在運行後查看的單獨目標。
大多數情況下,當我運行這個數據時,數據比預期的要長(即試圖將60個字符的字符串放入varchar(50)字段中),或者它是一個數字精度可能會丟失(即,將26.5整合到整數字段中,或將26.55整合到只允許一個小數位的數字字段中)。
設置DefaultBufferMaxRows = 1
這將讀取並處理每行一個接一個,並在該行會失敗,它的具有轉換的問題。
沒有必要通過拆分文件來手動執行此操作。