批量更新這是我們的使命:SSIS - 在數據庫字段級
- 來自客戶端的接收文件。每個文件包含1到1,000,000條記錄。
- 將記錄加載到暫存區域並應用業務規則驗證。然後
- 有效記錄進行抽成批處理方式OLTP數據庫,下列規則:
- 如果記錄不存在(我們有一個關鍵,所以這不是一個問題),創建它。
- 如果存在記錄,可選擇更新每個數據庫字段。這個決定是基於三個因素中的一個來做出的......我不相信這些因素是重要的。
我們的主要問題是找到的任選在字段級別更新數據的有效方法。這適用於大約12個不同的數據庫表,每個表中有10到150個字段(原始數據庫設計還有很多不足之處,但它就是這樣)。
我們的第一次嘗試是引入一個鏡像臨時環境(每個系統字段的臨時區域中的1個字段)幷包含掩碼標誌的表。掩蔽標誌的值代表3個因素。
我們然後把類似於UPDATE ...
UPDATE OLTPTable1 SET Field1 = CASE
WHEN Mask.Field1 = 0 THEN Staging.Field1
WHEN Mask.Field1 = 1 THEN COALESCE(Staging.Field1 , OLTPTable1.Field1)
WHEN Mask.Field1 = 2 THEN COALESCE(OLTPTable1.Field1 , Staging.Field1)
...
正如你可以想像,性能是相當可怕的。
有沒有人處理過類似的需求?
我們是一家MS店,使用Windows服務啓動處理數據處理的SSIS包。不幸的是,我們在這方面非常新手。