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

天呕心沥血花了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保存同步日志

 

 

 

 

 

 

相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页