KETTLE4個工作中有用的複雜例項--1、資料定時自動(自動抽取)同步作業
阿新 • • 發佈:2019-12-28
今天嘔心瀝血花了8個小時給大家帶來kettle工作中最常見的四種複雜例項,90%的專案用到這4種例項都可以解決。
4種例項種還有2種通用kettle工具,使用這兩種通用工具例項,可以直接修改相應的配置檔案,完成資料的同步。
下面就一一給大家帶來這4種例項,完全原創且可以拿來直接使用,廢話不說,下面直接給大家帶來具體例項:
KETTLE4個工作中有用的複雜例項--1、資料定時自動(自動抽取)同步作業
一、表資料自動同步
1、為了給大家更直觀的展示,【大喇叭玩轉資料庫】首先在資料庫建立4張表,表結構如下:
- t_student_kettle 學生資料來源表;
- t_student_kettle_target 學生目標資料表;
- t_class 班級資料來源表;
- t_class_target 班級 班級目標資料表;
- t_tbrz 同步日誌表
--1、學生資料來源表 -- Create table create table T_STUDENT_KETTLE ( id INTEGER, name VARCHAR2(2000), sex VARCHAR2(2000), age INTEGER, cjsj DATE, zhgxsj DATE default sysdate ) tablespace MYSPACE pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited ); --學生目標資料表 -- Create table create table T_STUDENT_KETTLE_TARGET ( id INTEGER, name VARCHAR2(2000), sex VARCHAR2(2000), age INTEGER, cjsj DATE, zhgxsj DATE default sysdate ) tablespace MYSPACE pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited ); --班級資料來源表 -- Create table create table T_CLASS ( id NUMBER, class VARCHAR2(100), cjsj DATE, zhgxsj DATE ) tablespace MYSPACE pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited ); --班級目標資料表 -- Create table create table T_CLASS_TARGET ( id NUMBER, class VARCHAR2(100), cjsj DATE, zhgxsj DATE ) tablespace MYSPACE pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited );
-- 同步日誌表
-- Create table
create table T_TBRZ
(
id NUMBER, --id
tbcgsj DATE, --同步成功時間(結束時間)
tbkssj DATE, --同步開始時間
bm VARCHAR2(100), --同步表名
tbjg CHAR(1) --同步結果:1-成功;2-未成功
)
tablespace MYSPACE
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
--建立同步日誌表的序列
create sequence SEQ_T_TBRZ
minvalue 1
maxvalue 999999999
start with 81
increment by 1
cache 20;
2、配置資料庫連線地址,一般專案上會通過配置jndi資料來源直接連線資料庫,不在配置jdbc資料來源了,有點類似於java的配置
3、設定資料庫連線,通過JNDI方式
4、作業整體流程
需要用到1個作業和6個轉換來操作2張表,一個表是3個轉換來完成,幾張表總共的轉換就是N*3個轉換。
下圖為整個作業的流程:
由上面流程圖可以看到,start分了兩個分支,一個是class表,一個是student表,下面我們來一一點開每個轉換看下。
1)T_CLASS資料變數設定
如上圖,T_CLASS資料變數設定,該步驟是獲取上次同步的成功時間,做為下次同步的開始時間,並設定到環境變數中,供後續的資料流呼叫
2)T_CLASS資料變數設定
如上圖,T_CLASS資料更新步驟,該步驟是獲取上次同步的成功時間之後的資料,插入更新到表中。
3)T_CLASS儲存同步日誌
如上圖,T_CLASS儲存同步日誌,該步驟是儲存本次同步的同步成功時間,插入到同步日誌表中,為下次同步的開始時間做準備,具體sql如下
1 INSERT INTO T_TBRZ 2 (ID, KSSJ, TBCGSJ, BM, TBJG) 3 VALUES 4 (seq_t_tbrz.NEXTVAL, 5 TO_DATE(SUBSTR('${V_SCTBCGSJ}', 0, 19), 'YYYY-MM-DD HH24:MI:SS'), 6 SYSDATE, 7 'T_CLASS', 8 '同步成功', 9 '1'); 10 DELETE FROM T_TBRZ 11 WHERE TBJG = '1' 12 AND BM = 'T_CLASS' 13 AND ID IN (SELECT ID 14 FROM (SELECT ID, ROWNUM RN 15 FROM (SELECT ID 16 FROM T_TBRZ 17 WHERE TBJG = '1' 18 AND BM = 'T_CLASS' 19 ORDER BY ID DESC)) 20 WHERE RN > 2); 21 COMMIT;View Code
3)T_CLASS同步成功
如上圖,T_CLASS同步步驟成功後,寫入該成功步驟,提示成功。
5、T_STUDENT_KETTLE表的資料同步工作,如同T_CLASS表一樣,存在3個轉換步驟
5、執行轉換,雙擊start,設定作業定時排程,設定完成後,執行轉換
6、執行結果,執行成功和執行失敗有不同的結果展示,可以根據此結果進行錯誤排除
注意:因某些限制,最新原始碼和後續通用配置實現資料抽取 已放置在筆者公眾號上,請關注微信公眾號: 大喇叭學資料庫, 回覆關鍵字:【例項】,獲取kettle安裝程式和執行例項(表結構和kjb、ktr檔案)。
------------恢復內容結束--------