本文配套源碼
我們已經介紹了三種方法來實現數據流源和數據庫數據的合並,也就是Excel中的數據和數據庫裡面的 數據進行同步,存在的數據進行更新操作,不存在的添加數據,另外還可以擴展為,如果數據庫為的數據在 Excel數據源中不存在,則執行刪除操作.接下來我們來介紹其它的方法來實現這樣的目標.
我們 在合並數據1中曾經介紹過,直接通過Merge和Merge Jone是無法直接實現的,不過我們可以通過變通的方 法實現.首先我們新建一個包MergeDataMerge,像之前一樣,象上次一樣,准備控制流,變量和連接管理器. 其實前面和合並數據1中的MergeData2一樣,將Excel數據源和數據庫表數據根據ProductNumber字段進行 合並.
這裡我們選的是完全外部連接,這樣才能完全合並兩邊的數據.當一方數據沒有匹配的數據時,有NULL 代替.所以我們直接根據合並後的ProductNumber和NewProductNumber 就可以直接這行數據應該對應的是 添加,更新,還是刪除.在Merge Join組件下面,我們添加Conditional Split組件,這個組件來判斷對於不 同的情況的分支:
很簡單,當行中對應的ProductNumber為NULL時,說明沒有從數據庫時面查到匹配的數據,所以這條數據 應該進行新增操作,當NewProductNumber為NULL時,說明Excel數據源中不存在數據庫中ProductNumber對 應的數據,所以此條數據應該進行刪除,最後,如果兩個ProductNumber相同,則應該進行更新操作.這裡需 要注意的是,一定要把兩個判斷ISNULL的條件放在前面,因為我們在第三個裡面用到了TRIM,如果為NULL值 時,會有錯誤發生.