2011-10-25 40 views
0

在平面文件我們有這種類型的記錄:過程項在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按順序運行這些文件。

並非所有的記錄都是這樣的。看起來有給我們一個交易記錄的歷史,而不是最新的更新。

謝謝。

回答

1

根據個人經驗,我發現在處理之前首先將事務數據加載到臨時表中,以成爲從平面文件處理事務數據的最有效方式。從那裏,它取決於你想如何保持歷史交易數據。就我個人而言,我的公司希望瞭解產品何時添加,產品的最新更新,最終何時發送以及何時由客戶接收產品。所以,將交易數據加載到臨時表中,以便專門抓取他們想要的內容。