[SQL SERVER][SSIS]更新有異動資料
SSIS有一陣子沒再摸了(...XD),最近都在忙交接工作剛好順便來複習一下。
需求:使用者提供來源異動資料,希望可以依據來源異動資料更新目地資料表,
由於該檔案會一直被修改,如一筆資料上午可能=10、中午=20,到了下班又變為10...等,
當然你不會希望靠人工來處理這樣的Case(很煩人),這時SSIS就相當方便好用了,這裡大概模擬紀錄一下。
新增Checksum元件(download)
(利用該元件來產生Checksum資料行,在與目地資料表比對就可以知道那些資料有被異動過)
目地Table
Table Layout。
來源資料
資料內容。
Data Flow
完整Data Flow。
Edit checksum
選擇需演算的資料行。
Edit Lookup
設定錯誤輸出。
SQL Statement。
對應資料行查閱比對。
Edit OLE DB目的
新增ErrorLog Table並依環境設定。
Edit 條件式分割
比較hash value。
Edit OLE DB Command
SQL Statement。
參數對應。
Edit 資料列計數
設定自定義變數。
開始測試
資料表內容。
預期會出現3筆錯誤資料,因目地Table無對應資料。
查看ErrorLog Table
確認Error訊息是否有正常寫入ErrorLog資料表。
Insert Data
insert into dbo.mychecksum values
('no1','aaa',123,-879608072),
('no2','bbb',456,-1427986952),
('no3','ccc',789,866958331)
再次執行SSIS
預期會出現3筆資料的相同比對結果,因為checksum=hash value。
修改一筆來源資料
執行SSIS
預期會依Table PK更新一筆資料,因checksum !=hash value。
確認最後資料。
參考