[SQL SERVER][SSIS]更新有異動資料

[SQL SERVER][SSIS]更新有異動資料

SSIS有一陣子沒再摸了(...XD),最近都在忙交接工作剛好順便來複習一下。

需求:使用者提供來源異動資料,希望可以依據來源異動資料更新目地資料表,

由於該檔案會一直被修改,如一筆資料上午可能=10、中午=20,到了下班又變為10...等,

當然你不會希望靠人工來處理這樣的Case(很煩人),這時SSIS就相當方便好用了,這裡大概模擬紀錄一下。

 

新增Checksum元件(download)

(利用該元件來產生Checksum資料行,在與目地資料表比對就可以知道那些資料有被異動過)

clip_image002

clip_image002[4]clip_image002[6]

 

目地Table

clip_image002[8]

Table Layout。

 

來源資料

clip_image002[10]

資料內容。

 

Data Flow

clip_image002[12]

完整Data Flow。

 

Edit checksum

clip_image002[14]

選擇需演算的資料行。

 

Edit Lookup

clip_image002[16]

設定錯誤輸出。

 

clip_image002[18]

SQL Statement。

 

clip_image002[20]

對應資料行查閱比對。

 

Edit OLE DB目的

clip_image002[22]

新增ErrorLog Table並依環境設定。

 

Edit 條件式分割

clip_image002[24]

 比較hash value。

 

Edit OLE DB Command

clip_image002[26]

SQL Statement。

 

clip_image002[28]

參數對應。

 

Edit 資料列計數

clip_image002[30]

設定自定義變數。

 

開始測試

clip_image002[32]

資料表內容。

 

clip_image002[34]

預期會出現3筆錯誤資料,因目地Table無對應資料。

 

查看ErrorLog Table

clip_image002[36]

確認Error訊息是否有正常寫入ErrorLog資料表。

 

Insert Data

insert into dbo.mychecksum values

		
('no1','aaa',123,-879608072),

		
('no2','bbb',456,-1427986952),

		
('no3','ccc',789,866958331)

 

clip_image002[38]

 

再次執行SSIS

clip_image002[40]

預期會出現3筆資料的相同比對結果,因為checksum=hash value。

 

修改一筆來源資料

clip_image002[42]

 

執行SSIS

clip_image002[44]

預期會依Table PK更新一筆資料,因checksum !=hash value。

 

clip_image002[46]

確認最後資料。

 

參考

Checksum Transformation