在平面文件我們有這種類型的記錄:過程項在SSIS
ID,操作,數據
操作包括d =刪除,U =更新,I =插入
1 ,d,測試
的問題是它們在文件多次發送相同ID和ID可以在文件中的任何地方:
例如:
1,d,測試
1000條記錄後....
1,I,測試
6000次記錄後....
1,d,測試
在我們的SSIS包中,我們有一個條件分割,它根據操作,刪除和更新來引導或拆分數據流。 SSIS中的問題是,它在行處理中不是順序的(這對於性能來說是好事),並且在插入之後可能發生刪除,反之亦然,這導致不正確的數據。
處理這個問題的最佳方法是什麼?
我們想出了一些想法:
轉儲文件到一個臨時表,並有追加到記錄文件的行ID,然後循環throught記錄順序在SQL Server中使用光標(順序按文件行號碼)。
使用foreach容器和ID的經歷每個記錄順序在SSIS
排序的文件,然後將「最新」的更新。
打破它分開文件的多個操作。例如,如果記錄有三個更新,則OriginalFile將變爲File1,File2,File3,然後通過SSIS按順序運行這些文件。
並非所有的記錄都是這樣的。看起來有給我們一個交易記錄的歷史,而不是最新的更新。
謝謝。