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保存同步日志
如上图,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、数据定时自动(自动抽取)同步作业的更多相关文章
- (办公)工作中的编码不良习惯Java(不定时更新)
1.别瞎写,方法里能用封装好的类,就别自己写HashMap. 2.方法名,整的方法名都是啥?退出close,用out. 3.git提交版本,自己写的代码,注释,提交版本的时候,一定要清理掉.每个判断能 ...
- vue中使用watch函数,当数据改变时自动引发事件
本来我的需求是这样的,使用ElementUI的日期选择器,当日期选择器被更改时需要根据新日期来向服务器获取新数据,但是发现这个日期选择器没有change事件,后来终于发现vue有个watch函数就是用 ...
- [Python][flask][flask-login]关于flask-login中各种API使用实例
本篇博文跟上一篇[Python][flask][flask-wtf]关于flask-wtf中API使用实例教程有莫大的关系. 简介:Flask-Login 为 Flask 提供了用户会话管理.它处理了 ...
- web工程迁移---在一个jboss5或jboss6中运行多个实例
在工作中遇到的,如何在一个jboss中运行多个节点(segment). 我使用的环境是win7.jboss5.jboss6.JDK6 1.jboss5下运行多个实例 第一步不用说,首先要在环境变量中设 ...
- C# 工作中遇到的几个问题
C# 工作中遇到的几个问题 1.将VS2010中的代码编辑器的默认字体“新宋体”改为“微软雅黑”后,代码的注释,很难对齐,特别是用SandCastle Help File Builder生成帮助文档 ...
- [工作中的设计模式]解释器模式模式Interpreter
一.模式解析 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 以上是解释器模式的类图,事实上我 ...
- [工作中的设计模式]享元模式模式FlyWeight
一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...
- [工作中的设计模式]责任链模式chain
一.模式解析 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知 ...
- 工作中常用的Linux命令:mkdir命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...
随机推荐
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 代码工程地址: https://g ...
- ELK2之ELK的语法学习
1.回顾 (1)es是什么? es是基于Apache Lucene的开源分布式(全文)搜索引擎,提供简单的RESTful API来隐藏Lucene的复杂性. es除了全文搜索引擎之外,还可以这样描述它 ...
- Java 调用restful webservice & jackson
package com.bullshit.webcrawler.client.impl; import java.io.BufferedReader; import java.io.IOExcepti ...
- 罗列Python标准模块
文本 1. string:通用字符串操作 2. re:正则表达式操作 3. difflib:差异计算工具 4. textwrap:文本填充 5. unicodedata:Unicode字符数据库 6. ...
- Android 在图片的指定位置添加标记
这些天,项目里加了一个功能效果,场景是: 假如有一个家居图片,图片里,有各样的家居用品: 桌子,毛巾,花瓶等等,需要在指定的商品处添加标记,方便用户直接看到商品,点击该标记,可以进入到商品详情页 .实 ...
- laravel 的路由中间件
简介# Laravel 中间件提供了一种方便的机制来过滤进入应用的HTTP请求.例如,Laravel 内置了一个中间件来验证用户的身份认证 , 如果没有通过身份认证,中间件会将用户重定向到登陆界面,但 ...
- PyODPS DataFrame 处理笛卡尔积的几种方式
PyODPS 提供了 DataFrame API 来用类似 pandas 的接口进行大规模数据分析以及预处理,本文主要介绍如何使用 PyODPS 执行笛卡尔积的操作. 笛卡尔积最常出现的场景是两两之间 ...
- NodeMCU快速上云集锦
摘要: 上至智慧园区项目,下至 `Hello world`,基于开源 MQTT 协议,阿里云 IoT 用户使用 NodeMCU 完成了不少 IoT 项目,以下为项目和教程集锦,欢迎大家一起上手试试. ...
- SuperSocket从服务器端主动发起连接
你可以从服务器端主动连接客户端, 连接建立之后的网络通信处理将和客户端主动建立连接的处理方式一样. var activeConnector = appServer as IActiveConnecto ...
- centos 磁盘挂载
1.更改磁盘格式 fdisk -l fdisk /dev/vdb mkfs.xfs /dev/vdb1 mkfs.xfs /dev/vdb1 -f 2.查看UUID blkid 3.挂载文件夹 vim ...