Kettle学习大集合
更新时间:2023-03-17 18:00:01 阅读量: 综合文库 文档下载
- kettle工具推荐度:
- 相关推荐
Kettle学习大集合
1. 什么Kettle?
Kettle是一个开源的ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)项目,项目名很有意思,水壶。按项目负责人Matt的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出。Kettle包括三大块: Spoon——转换/工作(transform/job)设计工具 (GUI方式) Kitchen——工作(job)执行器 (命令行方式) Span——转换(trasform)执行器 (命令行方式)
Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高 效稳定。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
2. Kettle简单例子 2.1 下载及安装Kettle
下载地址:http://sourceforge.net/projects/pentaho/files
现在最新的版本是3.6,为了统一版本,建议下载3.2,即下载这个文件pdi-ce-3.2.0-stable.zip。 解压下载下来的文件,把它放在D:\\下面。在D:\\data-integration文件夹里,我们就可以看到Kettle的启动文件Kettle.exe或Spoon.bat。
2.2 启动Kettle
点击D:\\data-integration\\下面的Kettle.exe或Spoon.bat,过一会儿,就会出现Kettle的欢迎界面:
稍等几秒,就会出现Kettle的主界面:
2.3 创建transformation过程
a.配置数据环境
在做这个例子之前,我们需要先配置一下数据源,这个例子中,我们用到了三个数据库,分别是:Oracle、MySql、SQLServer,以及一个文本文件。而且都放置在不同的主机上。
Oralce:ip地址为192.168.1.103,Oracle的实例名为scgtoa,创建语句为: create table userInfo(
id int primary key,
name varchar2(20) unique, age int not null, address varchar2(20) );
insert into userInfo values(1,'aaa',22,'成都市二环路'); insert into userInfo values(2,'东方红',25,'中国北京'); insert into userInfo values(3,'123',19,'广州白云区'); MySql:ip地址为192.168.1.107,数据库名为test2,创建语句为: create database test2;
use test2;
create table login( id int primary key,
realname varchar(20) unique, username varchar(20) unique, password varchar(20) not null, active int default 0 );
insert into login values(1,'aaa','admin','admin',0); insert into login values(2,'东方红','test','test',1); insert into login values(3,'123','xxx123','123456',1); SQLServer:本机,ip为192.168.1.115,创建语句为: create database test3;
use test3;
create table student(
sid varchar(20) primary key, sname varchar(20) unique, teacher varchar(20) not null, );
insert into student values('078','aaa','李老师'); insert into student values('152','东方红','Mr Wu'); insert into student values('034','123','徐老师');
文本文件:名为dbtest.log,位于192.168.1.103\\zhang\\上,即跟Oracle同一个主机。
数据仓库:位于192.168.1.107上,跟MySql一台主机,而且数据库也是MySql,也就是说,MySql上有2个数据库,test2和test4。创建语句为: create database test4;
use test4;
create table inforTotal( id int primary key,
name varchar(20) unique, age int not null, address varchar(20),
username varchar(20) unique, password varchar(20) not null, active int default 0, sid varchar(20) unique,
teacher varchar(20) not null, cat varchar(20), dog varchar(20) );
b.Spoon界面
在主界面,选择没有资源库,进入工作空间。
c.创建transformation文件 1.新建transformation文件
双击左边转换将创建一个新的transformation(也可以通过菜单里面的文件-新建-转换方式新建文件),点击
另存为,保存到本地路径,例如保存到D:/etltest
下,保存文件名为EtltestTrans,kettle默认transformation,文件保存后后缀名为ktr。
2.创建数据库连接
在transformation页面下,点击左边的【主对象树】,双击【DB连接】,进行 数据库连接配置。
在Connection Name下面的数据库里输入连接的名字,如oracle 在Settings里的Host Name里输入主机名,如102.169.1.103 在Settings里的Database Name里输入数据库名,如scgtoa 在 Settings里的User Name里输入数据库用户名,如bbs 在Settings里的Password里输入数据库密码,如bbs
然后点击”Test”按钮测试连接是否成功,如果成功后,点击OK按钮。
同样地,我们创建MySql和SQLServer的连接,如:
最后我们看到这样的界面:
d.抽取、转换、装载过程 1.表输入
在EtltestTrans页面下,点击左侧的【核心对象】,点击【输入】,选中【表输入】,拖动到主窗口释放鼠标。
双击工作区中【表输入】图标,数据库连接选择刚刚创建好的连接名为Oracle的数据库连接,在主窗口写入对应的查询语句: SELECT ID , NAME , AGE
, ADDRESS
FROM USERINFO ORDER BY NAME
步骤名称写为:oracle - userInfo表输入
可以通过预览,查看这个步骤输出的数据。
同样地,我们建立一个MySql的表输入组件:查询语句为 SELECT id
, realname , username , password , active FROM login
ORDER BY realname
步骤名称为:mysql - login表输入
2.表连接查询
在EtltestTrans页面下,点击左侧的【核心对象】,点击【连接】,选中【Merge Join】,拖动到主窗口释放鼠标。如图:
然后,点击表输入,按住shift键,再拖动鼠标到Merge Join,这时就实现了在两个组建之间的连线。如图:
双击工作区中的Merge Join,在出现的窗口里: 步骤名称命名为:表连接查询
第一个步骤选择:oracle - userInfo表输入 第二个步骤选择:mysql - login表输入 连接类型选择:FULL OUTER
在连接字段里,第一个步骤写:NAME,第二个步骤写:realname
3.表连接查询与表输入再次连接查询 SQLServer表输入,如图:
4.远程文本文件输入
在EtltestTrans页面下,点击左侧的【核心对象】,点击【输入】,选中【文本文件输入】,拖动到主窗口释放鼠标。 双击这个图标,进入编辑窗口:
输入步骤名称:远程文本文件输入
在选中的文件里的文件/目录下面输入,文件所在的路径,注:这个路径可以通过本机的网上邻居访问。 5.第三次表连接查询
再次拖入一个表连接查询图标,将上次的查询结果与远程文本文件相连,再进行一次表连接查询。
6.插入/更新
在EtltestTrans页面下,点击左侧的【核心对象】,点击【输出】,选中【插入/更新】,拖动到主窗口释放鼠标。将它与第三次表连接查询进行连线。 双击”插入/更新”图标,进入编辑窗口。
数据库连接选择数据仓库的数据库,目标表选择对应的infortaotal表,在查询关键字里,表字段写name(表示仓库表里的字段),流里的字段1里写入NAME(即上一个步骤输入的内容里的NAME)。比较符用”=”号。点击Edit mapping按钮,将表字段,与流利的字段进行对应,即流里字段里的值输入到表里的哪个字段里去。
行扁平化
这个步骤允许你扁平化预备的数据。 示例:
上面的示例,步骤设置如下:
值映射
这个步骤简单的映射字符串,从一个值映射到另一个值。
被冻结的步骤(Blocking Step)
这是一个非常简单的步骤。它冻结所有的输出,直到从上一步骤来的最后一行数据到达, 最后一行数据将发送到下一步。你可以使用这个步骤触发常用插件、存储过程和Java Script 等等。
记录关联(笛卡尔输出)
这个步骤允许你组合步骤中所有的行。
1、 临时目录:如果你想更多的行,指定系统存储临时文件的目录。 2、 最大缓存大小:系统从临时文件读取数据的缓存大小。 3、 读取的主要步骤:指定读取最多数据的步骤名称。 4、 条件:你可以指定复杂的条件来限制输出行数。
数据库连接
这个步骤允许你使用先前的步骤的数据,运行一个数据库查询。 能够指定查询参数: 在sql查询中用“?”,运行查询时使用数据网格中的数据。
1、 Number of rows to return :0代表所有行,其他数字限制行的输出。 2、 外连接?:选中,则总会返回一个结果,就算查询脚本没有结果。 3、 获取字段:获取来自上一个步骤的数据。
合并记录
这个步骤允许你比较两个行流。如果你想在两个不同时间比较数据,这是非常有用的。它常被用于数据仓库源系统没有包含最后更新日期的情况。两个行流被合并,一个是引用流(旧数据),一个比较流(新数据)。每次都是行的最后版本通过下一个步骤。行有以下标记:
1、 “identical”:关键字在两个流中都存在,并且值相同。 2、 “changed”:关键字在两个流中都存在,但是一个或者更多的值不同 3、 “new”:引用流中没有找到关键字。 4、 “deleted”:比较流中没有找到关键字。
比较流中的数据进入下一步骤,除非在“删除”的情况。
排序合并(Sorted Merge)
这个步骤合并来自多个输入步骤的数据行,并且这些行用指定的关键字排序。包括以下选项: 1、 字段:指定排序的关键字段。
Merge Join(合并连接)
这个步骤将来自两个不同步骤输入的数据执行一个高效的合并。合并选项包括Inner、left outer、right outer、full outer。
备注:这个步骤将输入的行按指定的字段存储。连接时连接字段必须有序。
Java Script值(Modified Java Script Value)
这个步骤允许你用JavaScript语言做复杂的运算,改进的js效率更高,更易用。 1、 插入字段:插入字段及字段的值。 2、 测试脚本:测试脚本的语法。
3、 获取变量:获取最新的变量并且插入到“字段”网格中 4、 js函数见附录1。
改进的js针对可用的脚本、函数、输入字段和输出字段,提供一个树菜单浏览。 1、 Transformation Script:展示你在步骤中创建的脚本列表。 2、 Transformation Constants(转换常量):一个包含
SKIP_TRANSFORMATION,ERROR_TRANSFORMATION,CONTINUE_TRANSFORMATION等静态常量的列表。
3、 Transformation Functions:包含多种String,Numeric,Date,Logic以及特殊函数,你可
以在创建脚本的时候使用它。
4、 Input fields:步骤输入字段列表。双击或者拖拉可以将字段插入到你的脚本中。 5、 Output fields:步骤输出的字段。
执行SQL语句
这个步骤中你可以执行sql脚本(执行增删改脚本DDL等),或者在转换初始化的时候执行,或者在步骤的每一个输入行执行。
1、 执行每一行:读取上一步骤传来的每一行时都执行一次sql脚本。 2、 参数:用来给sql中的“?”赋值。
3、 包含插入状态的字段:该字段值为执行sql语句插入的行数。 4、 包含更新状态的字段:该字段值为执行sql语句更新的行数。 5、 包含删除状态的字段:该字段值为执行sql语句删除的行数。 6、 包含读状态的字段:该字段值为执行sql语句读数据的行数。
注意:该步骤主要用来对数据进行增、删、改,执行对数据的查询操作,使用“表输入”步骤(可以执行任何查询语句,包含连接、分组、排序等)。 例子:
正在阅读:
Kettle学习大集合03-17
射线装置制度03-17
应用统计spss分析报告12-27
销售话术之葵花宝典篇(360搜索)10-06
门式脚手架安全技术交底08-29
部编版五年级语文下册:第二单元知识梳理04-09
初中数学鲁教版八年级下册《用分解因式法解一元二次方程》教案04-08
四年级音乐上册知识点01-06
步步高2012历史小高考大一轮专题11 25讲 (2)05-11
地理9 - 图文05-21
- 冀教版版五年级科学下册复习资料
- 微生物学复习提纲
- 2013—2014学年小学第二学期教研组工作总结
- 国有土地转让委托服务合同协议范本模板
- 我的固废说明书
- 企业管理诊断报告格式
- 东鼎雅苑施工组织设计
- 谈谈如何做好基层党支部书记工作
- 浮梁县环保局市级文明单位创建工作汇报
- 管理学基础知识
- 大学物理实验报告23 - PN结温度传感器特性1
- 计算机网络实践
- 酒桌上这四种情况下要坐牢,千万别不当回事……
- 国家康居示范工程建设技术要点
- 中国贴布行业市场调查研究报告(目录) - 图文
- 新课标下如何在高中物理教学中培养学生的创新能力初探
- 营养师冬季养生食谱每日一练(7月4日)
- 关注江西2017年第3期药品质量公告
- 建设海绵城市专题习题汇总
- 10万吨年环保净水剂建设项目报告书(2).pdf - 图文
- 集合
- Kettle
- 学习
- 抽屉原理 题库教师版
- 城市饮用水四种消毒技术的对比研究
- 2016年山东省继续医学教育公共课程临床护理风险防范答案
- 中国生鲜电商行业规模态势调研及企业投资环境预测报告
- 二次函数应用题及压轴题
- 智能车牌识别操作使用说明书 - 图文
- 学习《消防安全》心得体会
- 成本会计案例
- 树立良好的职业道德建设好企业文化管理
- 领养小猫注意事项
- 2010年职称计算机考试WindowsXP章节考点提示
- 钻孔抽采半径测定研究报告 - 图文
- 蒙牛、伊利、光明物流解密
- 格力FREE系列直流变频多联空调机组
- 单片机课后习题答案
- 王守仁的教育思想
- 100公共关系复习重点
- 射线装置制度
- 四年级语文下册 综合学习一教案1 冀教版
- 高新技术企业技术成果转化存在的问题及对策研究