我有一個ETL過程,對於這個問題的目的,完全在T-SQL中完成。SQL Server合併(排序)和跟蹤更新
在提取階段,目前的流程是:
- 截斷我們的「源」表
- 插入從ODS表中的所有數據到我們的「源」表
然而,我想要實現執行「增量」加載的能力,其中只包括插入新數據和更新更改的數據。這樣的過程會是這樣的:
- 集「檔案」中的「源」表位(現在所有的數據存檔,即不變)
- 更新現有從ODS數據爲「源」(集更新的行歸檔位爲0)
- 插入從ODS的新數據爲 「源」(與歸檔位0)
我知道在SQL Server 2008+的MERGE
聲明。但是,我擔心的是如何正確記錄哪些行實際發生了更改。如果我只是做一個MERGE
,我相信找到的每一行都會被標記爲已更改,即使數據本身不變。
除了指定更新謂詞中的每一列之外,是否有任何技巧可以做到這一點?還是有更好的過程來實現我想要做的事情? FWIW,我想避免一個涉及SSIS的解決方案,如果可能的話由於我無法控制的原因。