您的位置:首页 > 其它

KETTLE4个工作中有用的复杂实例--1、数据定时自动(自动抽取)同步作业

2019-12-28 11:33 1721 查看

 

今天呕心沥血花了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的配置

INSERT INTO T_TBRZ
(ID, KSSJ, TBCGSJ, BM, TBJG)
VALUES
(seq_t_tbrz.NEXTVAL,
TO_DATE(SUBSTR('${V_SCTBCGSJ}', 0, 19), 'YYYY-MM-DD HH24:MI:SS'),
SYSDATE,
'T_CLASS',
'同步成功',
'1');
DELETE FROM T_TBRZ
WHERE TBJG = '1'
AND BM = 'T_CLASS'
AND ID IN (SELECT ID
FROM (SELECT ID, ROWNUM RN
FROM (SELECT ID
FROM T_TBRZ
WHERE TBJG = '1'
AND BM = 'T_CLASS'
ORDER BY ID DESC))
WHERE RN > 2);
COMMIT;
View Code  

3)T_CLASS同步成功

 

 

   如上图,T_CLASS同步步骤成功后,写入该成功步骤,提示成功。

 

 

 5、T_STUDENT_KETTLE表的数据同步工作,如同T_CLASS表一样,存在3个转换步骤

 

 

 

 

 5、运行转换,双击start,设置作业定时调度,设置完成后,运行转换

 

 

 

 

 

6、运行结果,运行成功和运行失败有不同的结果展示,可以根据此结果进行错误排除

 

 注意:因某些限制,最新源代码和后续通用配置实现数据抽取 已放置在笔者公众号上,请关注微信公众号: 大喇叭学数据库, 回复关键字:【实例】,获取kettle安装程序和运行实例(表结构和kjb、ktr文件)

 

 

 

 

 

------------恢复内容结束------------

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: