一款强大的数据抽取转换加载工具
简介
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程
下载
Kettle的下载与安装(选择相应版本解压缩即可,需要java环境)
打开
双击.bat文件即可
组件转换Trans和任务JOB
重点是转换,JOB可以看成是一个对转换的封装,就是控制转换执行的逻辑单元
创建一个转换
1.文件–>新建–>转换
可以看到有主对象树和核心对象两个列表,主对象树就是转换的核心,由基本元素和核心对象构成,主要编辑的还是核心对象的设置,
来设置一个简单的数据读取,拉取核心对象中输入模块的表输入(双击也可)
选中双击编辑
新建,同一个转换中可以重复使用定义过的数据库连接
同样怕乱码就设置字符–>选项里
注意: 工具原生没有相关jar包,需要自己根据自己连接情况选择对应的jar包导入对应的lib目录下
基本数据就导入成功了,现在就选择对应的sql语句,点击获取sql选择相应的表,可以生成一个全量的sq语句,当然可以自加工数据,这里给一个拿取近两天数据的例子
SELECT
id
, gas
, heeat
, create_by
, create_time
, update_by
, update_time
FROM sys_depart where TO_DAYS(NOW()) - TO_DAYS(create_time) <= 1
or TO_DAYS(NOW()) - TO_DAYS(update_time) <= 1
后面可以接一个字段选择,可以更明确的知道流里的字段,也可以再字段选择里修改字段的映射
到这里就确定了一个输入流的源数据,接下来就可以对流里数据做一些想做的操作,这里演示就是一个公式的操作然后输出到数据库中
可以定义一个新的字段(中文也行)点击公式可以对流中数据做一些操作这里就简单说下元素使用[]包住,其他大同小异,自行探索
这样流中就多出一列名为总的数据,
在来表输出或者使用 插入/更新 来同步数据
差别在于 表输出是insert ,插入更新是有条件的update
注意:这里边的提交记录数量是单次commit的数量,最好填上,
输入字段映射里面很简单,会识字就行,
这样一个简单的转换就完成了,可以运行
拓展一,多表的操作
排序记录可以不要,主要是合并表操作,
规定一个join条件就可以搞成一张表来玩流了
拓展二 Http拉取数据的操作
方式很多,基本的get就用HTTP client ,post用HTTP Post ,其他自行学习
这里先定义一个记录来传一个url
再来使用流里的url等数据来配置一个服务请求
再使用JSON Input 来解析
关于JSONPath解析,参照案例和http://jsonpath.com/
下面的就大同小异了,
JOB
—待补充