目的 (Kettle 版本5.2或以上 可由官网下载,免费开源)
从源库中同步若干张数据表至目标库或目标文件中
(鉴于Kettle工具对数据库连接的插件支持不是太好,最好是在源库与目标库类型相同的情况下使用,如:都是Oracle或都是Mysql等,当然不同的数据库也是可以的)
数据同步方式 暂支持以下两种(即表2表 表2文件)可做配置
1)从源库表中同步数据至目标库表中 (目标表名可配置)
2)从源库表中同步数据至目标文件中 (目标文件名可配置)
数据源可配置 工具连接数据库统一使用JNDI的连接池来连接数据库;
JNDI统一配置在 data-integration/simple-jndi/jdbc.properties文件中,在向ETL执行源表: etl_kettle_tables 插入数据表信息的同时指定数据源;
执行结果校验
在工具同步数据结束后,会有数据校验步骤,校验的原则为,以下情况视为数据同步失败:
1)日志状态为 N-失败;
2)源库表中影响的行数与插入目标库表时影响的行数不同;
后续可添加其它校验规则;校验位置: tran4.2-check-failure 中
日志记录
工具在同步每张数据表时,都有对应的日志文件生成;
以下为详细配置步骤:
1、流程图
1.1 Kettle数据同步总流程
总流程图
1.2 Kettle数据同步详细流程
详细流程图
2、 数据模型设计
简要说明:
ETL执行源表 etl_kettle_tables (Kettle从该表中动态加载需要执行的数据表信息)
ETL临时手动执行源表: etl_kettle_tables_error (手动处理时Kettle从该表中动态加载需要执行的数据表信息)
ETL日志表: etl_kettle_log (记录每次同步结果)
ETL同步结果表:etl_kettle_result (记录每次同步的成功与失败表数量)
具体详细表结构请下载模型设计查看
3、 同步工具配置详细步骤
3.1 启动Kettle工具
3.1.1 创建kettle文件资源库(若已有资源库可跳过)
1)在打开的如下图中点击【+】号按钮, 如下图
新建资源库
2)弹出如下窗口 选择文件资源库类型 Kettle file repository
选择文件资源库
3)在弹出的如下窗口中选择文件资源库的目录位置并设置资源库名称(注:最好起有意义的英文名称,下面的描述Description最好也是使用英文,中文可能会有乱码)
创建文件资源库
4)在上图中点击确定即可完成文件资源库创建
3.1.2 打开文件资源库
1)启动Kettle工具 弹出如下窗口 选择已经创建好的资源库名称,输入登录用户名及密码并点击确认按钮
连接资源库
即可成功登录资源库,弹出如下欢迎界面窗口
3.2 Kettle工具配置
3.2.1 主作业入口 Job-Tools-Main
主作业内容如下图
主作业
现详细说下主作业的各项内容
A)变量配置 tran1.1-set-commen-variables
a) 主要用来设置一些变量供后面使用 内容如下图
变量定义
b) 生成随机数 里面配置为空(也可以不用使用这个插件直接删除掉)
c) 公共变量定义 此处主要来设置变量,是A)步骤的核心设置 如下图
变量设计
需要注意的是 下半部分的字段位置 需要选择出已做好的变量 (其中“改名为”字段 可默认也可以修改,一般在定义的名称前面添加 v_ 用以标识变量)
现粘贴出里面的代码供查看
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getS