kettle培训手册Word格式文档下载.docx

上传人:b****6 文档编号:16147888 上传时间:2022-11-21 格式:DOCX 页数:36 大小:5.57MB
下载 相关 举报
kettle培训手册Word格式文档下载.docx_第1页
第1页 / 共36页
kettle培训手册Word格式文档下载.docx_第2页
第2页 / 共36页
kettle培训手册Word格式文档下载.docx_第3页
第3页 / 共36页
kettle培训手册Word格式文档下载.docx_第4页
第4页 / 共36页
kettle培训手册Word格式文档下载.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

kettle培训手册Word格式文档下载.docx

《kettle培训手册Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《kettle培训手册Word格式文档下载.docx(36页珍藏版)》请在冰豆网上搜索。

kettle培训手册Word格式文档下载.docx

但不需要掌握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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1