延續前兩篇合併數據系列,本文介紹利用 Merge Join (完全外部聯結) 搭配 Conditional Split 實現 Excel 來源與資料庫目標的完整同步:新增、更新、刪除三合一。
ProductNumber 排序

| 輸出名稱 | 條件運算式 | 業務含義 | 後續處理 |
|---|---|---|---|
| Insert 新增 | ISNULL(ProductNumber) | 資料庫無此產品編號 → Excel 新資料 | OLE DB Destination (Insert) |
| Delete 刪除 | ISNULL(NewProductNumber) | Excel 無此產品編號 → 資料庫舊資料需刪除 | OLE DB Command (DELETE) |
| Update 更新 | ProductNumber == NewProductNumber && !ISNULL(ProductNumber) | 雙方皆存在 → 比對欄位決定是否更新 | OLE DB Command (UPDATE) |
必須將兩個 ISNULL 判斷放在最前面。因為第三個條件使用 TRIM 函數,若欄位為 NULL 會拋出錯誤。SSIS 條件評估是短路的,先過濾 NULL 再比對內容。

| 優點 | 缺點 |
|---|---|
| 單一資料流完成增刪改,邏輯清晰 | 需預先排序,大量資料排序耗資源 |
| 視覺化邏輯易維護 | OLE DB Command 逐列執行,批次效能較差 |
| 無需撰寫複雜 SQL | 難以處理大量資料的高效能同步 |