kettle培训手册Word格式文档下载.docx
- 文档编号:16147888
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:36
- 大小:5.57MB
kettle培训手册Word格式文档下载.docx
《kettle培训手册Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《kettle培训手册Word格式文档下载.docx(36页珍藏版)》请在冰豆网上搜索。
但不需要掌握kettle。
情况二:
不需要编写专门的导入程序,不同的文件格式只需要修改“文本文件输入”step中的对应参数即可。
不需要针对不同的数据库编写不同版本的存储过程,只需要使用标准SQL就可以具备通用性。
需要掌握kettle。
好处:
跨数据库、跨平台,减少我们的工作量。
Kettle中有两种类型的对象,分别对应两种类型的文件。
一种是Transformation(以后简称Trans),即转换;
一种是Job,即工作。
Trans完成具体的任务,Job用于控制转换之间的执行顺序。
第一部分:
与数据库打交道
1创建数据库连接
<
1>
新建一个Transformation,在“DB连接”下创建一个“数据库连接”,如下图所示:
2>
如果创建kettle不支持的数据库的连接,ConnectionType选择Genericdatabase。
2共享连接可以在不同的Transformation中共享,可以减少数据库配置工作。
右键单击需要共享的连接,选择“Share”选项,如下图所示:
3用变量保存参数,在不同的环境下切换时会省心省力。
设置环境变量(编辑-->
设置环境变量,Ctrl+Alt+J),如下图所示:
在需要使用变量的地方通过${变量名}读取,参考“创建数据库连接”。
4从数据库中读取数据。
(加工数据需要先读取数据)
不带参数读取数据。
表输入(tableInput),获取SQL查询语句,针对数据表的各种Actions。
带参数读取数据。
两种参数方式:
第一种:
占位符(?
)
规则:
关键字(例如:
table、index),标识符(表名、索引名)不能通过这种占位符(?
)参数传递。
可以这样传递参数,但所有的参数类型必须一样。
这样传递参数时,参数类型可以不同。
例子为:
注意:
带参数查询在“表输入”中有时不能预览,需要运行转换去验证是否正确。
执行多次SQL语句,但条件取值不同,例如如下条件:
第二种:
用变量名,例如:
${ORDER_COLUMN}。
table、index),标识符,整条SQL语句都可以用变量替换,但使用时要小心。
在运行时才确定SQL语句:
设置环境变量(Ctrl+Alt+J),输入ORDER_COLUMN及其值,如下:
定义一个“表输入”,在“SQL”中输入带参数的SQL语句如下:
${ORDER_COLUMN}就是刚才设定的环变量。
选中“替换SQL语句里的变量”复选框。
相当于执行SELECTI_USERID,C_USERLOGINNAME,C_USERLOGINPWD,C_USERNAME,I_POSITIONID,D_CREATETIME,D_LASTLOGINTIME,I_LOGINCOUNT,I_ENABLED,C_MEMOFROMSYS_USERORDERBYi_userid
这里只替换环境变量,不替换占位符变量(?
)。
定义输出到文件,如下:
在同一条SQL语句中,同一个变量可以多次使用,如下:
5.Insert/update
(1)文本文件输入:
选中“文件”选项卡,选择指定的文本文件,点击“增加”按钮,把选中的文本文件添加到“选中的文件”列表框中:
点击“显示文件内容”,如下:
选中“内容”选项卡,把分隔符改为“,”(分号),如下所示:
选中“字段”选项卡,并点击“获取字段”,如下所示:
把所有字段的数据类型改为String。
(2)创建一个"
Insert/Update"
,双击,指定数据库连接、目标模式、数据表、用来查询的关键字(先点击“获取字段”)、更新字段(先点击“获取和更新字段”),如下所示:
按“F9”运行。
"
插入/更新"
操作实现逻辑:
先根据关键字做判断,如果不存在,则执行插入操作;
如果已经存在,再判断是否存在差异,存在则更新,不存在则不更新。
If(关键字取值是否存在==true){
If(需要更新的字段值是否存在差异==ture){
执行update操作
}//否则不执行update操作
}else{//关键字取值不存在
执行insert操作
}
技巧:
(1)如果只是插入数据则用“表输出”,“表输出”比"
快,因为不需要判断。
(2)如果只是更新数据则用“更新”,“更新”比"
6.用“表输出”、“更新step”替换“插入/更新step”,速度比“插入/更新step”要快。
为什么会快?
答:
不用判断要更新的记录每个字段是否有变化,而是直接更新。
注意事项:
(1)文本文件输入注意分隔符、数据类型。
(2)表输出选中“Specifydatabasefields”,指定输出字段。
(3)“表输出”指定查询关键字、更新字段;
选中“使用批量插入”,要注要Commitsize。
如果只插入2条记录,但Commitsize是10则执行时会出错;
是否有方法强制最后提交?
“更新”选中“Usebatchupdates”,要注要Commitsize。
如果只更新2条记录,但Commitsize是10,则不会提交。
(4)数据表必须有唯一主键。
作为异常判断条件。
7.Combinationlookup/update
创建一个“文本文件输入”,双击进入编辑页面,在“文件”选项卡中指定文本文件并添加到“选中的文件”列表中,如下图所示:
选中“内容”选项卡,指定“分隔符”为“;
”(分号),如下图所示:
选中“字段”选项卡,点击“获取字段”按钮获取字段。
如果分隔符选择错误,则这里获取不到正确的结果。
创建“联合更新/查询”(英文是Combinationlookup/update,在“数据仓库”分类中)。
指定数据库连接为pdiTest,目标表为“offices”,点击“获字字段”,这里是指要插入到目标的字段。
其中“维度字段”是指目标表的字段,“在流里面的字段”是指文本文件中的字段。
在“代理关键字”中填写主键字段officeCode,代理键的创建选择“使用表里的最大值+1”。
如下图所示:
也可以使用sequence自动生成主键值(先创建offices_seq),如下图所示:
createsequenceoffices_seq
startwith100
incrementby1;
可以只插入部分字段,在“关键字段”列表中选中不需要插入的字段并删除即可,如下图所示:
8.通过已存在的主键值确定新记录的主键值。
例如:
主键的取值形式为A00001、A00002、A00003、A00004。
(1)创建表输出step,并在SQL脚本处填写以下脚本,读取最大的author_id值,如下图所示:
(2)创建文本文件输出step,添加authors.txt文本文件,指定分隔符为“|”,如下图所示:
(3)创建“记录关联(笛卡尔输出)”(在连接分类中,英文叫Join),把前2个step指向此step,如下图所示:
(4)创建“增加序列”step(在转换分类中,英文叫"
Addsequence"
),指定步骤名称、值的名称、起始值、增加根据,如下图所示:
(5)创建“转换-->
计算器”,进如下图配置:
(6)创建“表输出”step,如下图所示:
整个转换如下图所示:
演示。
9.Deletedatafromatable。
目标:
带条件删除记录,部分条件在excel文件中。
(1)从Excel文件读取要删除的产品分类名称。
创建“Excel输入”step并指定包括要删除产品分类名称的Excel文件,获取Excel文件的字段。
(2)创建"
数据库查询"
step(在查询分类中),选择产品分类表categories,指定查询所需的关键字:
category=category,查询表返回的值id_category。
这里相当于执行selectid_categoryfromcategorieswherecategory=category(从Excel文件中读取)。
(3)读取变量到流中(因为第4步的delete操作只能从流中读取数据)。
创建“GetVariables”step(在作业分类中)。
(4)进行删除操作,删除的条件是price<
=50andcategoryin(excel中的category)。
创建“删除”step(在输出分类中),指定删除条件,如下图所示:
执行结果:
删除了category为tents和tools的所有price<
=50产品。
通过比较如下SQL语句在执行上面转换前后的结果可以知道其差异。
selectc.category,count(*)fromproductsp,categoriescwherep.id_category=c.id_categoryandp.price<
=50groupbyc.categoryorderbycategory
转换执行之前:
转换执行之后:
整个转换如下图所示:
10.CreatingoralteringadatabasetablefromPDI(designtime)。
通过XML文件创建/修改表结构,并插入数据。
11.CreateoralteringadatabasetablefromPDI(runtime)。
12.inserting,deletingorupdatingatablebasedonafield.
整体流程图:
(1)创建“文本文件输入”step读取book_news.txt数据。
具体设置如下:
分隔符用“|”,如下图:
(2)创建“转换-->
拆分字段”step,拆分更新记录中的author字段为lastname和firstname字段。
[1]分隔符为"
"
。
[2]去除空格类型为“去掉左右两端空格”。
(3)创建“查询-->
数据库查询”step,目的是根据lastname和firstname读取authors表中符合条件的作者的id_author。
具体设置如下所示:
(4)创建“输出-->
Synchronizeafter
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- kettle 培训 手册