KETTLE4個工作中有用的復雜實例--1、數據定時自動(自動抽取)同步作業


KETTLE4個工作中有用的復雜實例--1、數據定時自動(自動抽取)同步作業

歡迎關注筆者的公眾號: java大師, 每日推送java、kettle運維等領域干貨文章,關注即免費無套路附送 100G 海量學習、面試資源喲!!個人網站: http://www.javaman.cn/kettle/kettle-in-action

今天嘔心瀝血花了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、運行結果,運行成功和運行失敗有不同的結果展示,可以根據此結果進行錯誤排除

 

 

 

注意:因某些限制,最新源代碼和后續通用配置實現數據抽取 已放置在筆者公眾號上,請關注微信公眾號: 【JAVA大師】, 回復關鍵字:【KETTLE】,獲取kettle安裝程序和運行實例(表結構和kjb、ktr文件)

同時筆者原創了一套視頻教程:現免費發放100套,先到先得。獲得方法:掃描下方二維碼,關注獲得

img


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM