今天呕心沥血花了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如下

 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',
'同步成功',
'');
DELETE FROM T_TBRZ
WHERE TBJG = ''
AND BM = 'T_CLASS'
AND ID IN (SELECT ID
FROM (SELECT ID, ROWNUM RN
FROM (SELECT ID
FROM T_TBRZ
WHERE TBJG = ''
AND BM = 'T_CLASS'
ORDER BY ID DESC))
WHERE RN > 2);
COMMIT;

3)T_CLASS同步成功

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

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

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

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

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


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

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

  1. (办公)工作中的编码不良习惯Java(不定时更新)

    1.别瞎写,方法里能用封装好的类,就别自己写HashMap. 2.方法名,整的方法名都是啥?退出close,用out. 3.git提交版本,自己写的代码,注释,提交版本的时候,一定要清理掉.每个判断能 ...

  2. vue中使用watch函数,当数据改变时自动引发事件

    本来我的需求是这样的,使用ElementUI的日期选择器,当日期选择器被更改时需要根据新日期来向服务器获取新数据,但是发现这个日期选择器没有change事件,后来终于发现vue有个watch函数就是用 ...

  3. [Python][flask][flask-login]关于flask-login中各种API使用实例

    本篇博文跟上一篇[Python][flask][flask-wtf]关于flask-wtf中API使用实例教程有莫大的关系. 简介:Flask-Login 为 Flask 提供了用户会话管理.它处理了 ...

  4. web工程迁移---在一个jboss5或jboss6中运行多个实例

    在工作中遇到的,如何在一个jboss中运行多个节点(segment). 我使用的环境是win7.jboss5.jboss6.JDK6 1.jboss5下运行多个实例 第一步不用说,首先要在环境变量中设 ...

  5. C# 工作中遇到的几个问题

    C#  工作中遇到的几个问题 1.将VS2010中的代码编辑器的默认字体“新宋体”改为“微软雅黑”后,代码的注释,很难对齐,特别是用SandCastle Help File Builder生成帮助文档 ...

  6. [工作中的设计模式]解释器模式模式Interpreter

    一.模式解析 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 以上是解释器模式的类图,事实上我 ...

  7. [工作中的设计模式]享元模式模式FlyWeight

    一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...

  8. [工作中的设计模式]责任链模式chain

    一.模式解析 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知 ...

  9. 工作中常用的Linux命令:mkdir命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...

随机推荐

  1. RDS 5.7三节点企业版时代的数据一致性解决方案

    上篇我们看到了在MySQL主备模式下,我们在数据一致性上做了不少事情,但解决方案都有一定的局限性,适合部分场景或者解决不彻底的问题.随着以Google Spanner以及Amazon Aruora 为 ...

  2. js赋值符号“=”的小例子

    var obj1={x:5}; var obj2=obj1; obj1.a=obj1={x:6}; console.log(obj1.a); console.log(obj2.a); 为什么obj1. ...

  3. MacOS局域网访问Windows7共享文件

    配置步骤 Windows7 进入[控制面板]-[网络和共享中心]-[高级共享设置] 启用网络发现 启用文件和打印机共享 选择要共享的文件或文件夹,点击[共享]-[特定用户] 选择Windows7当前登 ...

  4. Effective C++: 03资源管理

    所谓资源,就是一旦用了它,将来必须还给系统.C++中的资源有:内存.文件描述符.互斥锁.数据库连接.网络socket等. 13:以对象管理资源 1:像下面这个函数: void f() { Invest ...

  5. 提供SaaS Launchkit,快速定制,一云多端等能力,一云多端将通过小程序云实现

    摘要: SaaS加速器的技术中心能力中,将提供SaaS Launchkit,快速定制,一云多端等能力,加速应用上云迁移.降低应用开发和定制的门槛,提升效率.其中非常关键的一云多端能力将通过小程序云实现 ...

  6. python的str,unicode对象的encode和decode方法, Python中字符编码的总结和对比bytes和str

    python_2.x_unicode_to_str.py a = u"中文字符"; a.encode("GBK"); #打印: '\xd6\xd0\xce\xc ...

  7. 【NS2】TCL debug (转载)

    1.使用NS2进行模拟,就不可避免的会接触TCL/OTCL和C/C++.两者配合使用.一般设置场景啊,业务流啊,都使用TCL/OTCL来编写脚 本.要进行路由实验模拟的话,同一类的实验,这些脚本基本上 ...

  8. dnspython

    dnspython 一个Python实现的一个DNS工具包,利用其查询功能来实现dns的服务监控及解析结果的校验. 安装 pip install dnspython 解析域名为IP from dns ...

  9. Python traceback模块简单使用

    Python中的traceback模块被用于跟踪异常返回信息,可以在logging中记录下traceback. traceback.format_exc() 获取异常为字符串,保存到日志文件 try: ...

  10. 配置上这个模板Bug少90%

    本来写程序经常会碰到各种难缠的Bug,自从修改了注释模板,bug明显少了,看效果图: 好吧,我逗比了 下面是文字版: /** _oo0oo_ o8888888o 88" . "88 ...