1. 程式人生 > >ETL增量單表同步簡述_根據dateTime增量

ETL增量單表同步簡述_根據dateTime增量

通過 要求 ima cnblogs arch job eat blog 必備

ETL增量單表同步簡述

1. 實現需求

當原數據庫的表有新增、更新、刪除操作時,將改動數據同步到目標庫對應的數據表。

2. 設計思路

設計總體流程圖如下:

技術分享

步驟簡單說明:

1、設置job的執行屬性,如下圖:

技術分享

2、根據要同步的表名,更新同步配置表synConfigendTime

技術分享

3、獲取同步時間段並將beginTimeendTime設置到變量中。

技術分享

4、獲取beginTime>= and <endTime,根據比較原表和目標表數據的差異性,進行更新/插入數據到目標表。

技術分享

5、根據比較原表和目標表數據的差異性,進行刪除目標表的數據。一般通過id進行比較,故與4步驟分開處理。

技術分享

6、更新提取的開始時間和結束時間,將上次提取的結束時間更新到開始時間。此步驟與4步驟配合。

技術分享

3. 必備條件

1、目標數據庫的表結構與原數據庫相同;

2、同步的表要有syncTime字段,且數據類型和同步配置表synConfigbeginTimeendTime的數據類型相同。

3、當原表有新增、更新操作時要更新synTime字段。

4. 具體實現

4.1. 同步配置表設計

創建同步配置表synConfig如圖所示:

技術分享

字段說明如下:

?name:要同步的數據表名字。

beginTime:同步開始時間。

endTime:同步結束時間。

如下圖表示數據表table3開始同步的時間為

2017-05-11 14:20:51.473,結束時間為2017-05-11 14:20:53.520

技術分享

建表sql如下:

create table synConfig(

  name nvarchar(64) not null,

  beginTime datetime,

  endTime datetime,

);

4.2. 軟件安裝

1、Jdk

2、Kettle同步工具

說明:

技術分享

kettle7版本要求jdk必須為1.8以上。

詳細可參考官網:http://community.pentaho.com/projects/data-integration/

ETL增量單表同步簡述_根據dateTime增量