Kettle版本:3.2GA
JDK版本:1.6.0_41
OS:NT
需求:需要把业务系统库、TXT文件、EXCEL文件中的数据抽取到数据仓库中。
1、 创建转换(Ctrl+N),转换名称为:RotKang_Test01
2、 创建数据源连接Rot_Source、Rot_Target,可参考【Kettle数据源连接配置】
3、 在Kettle设计盘中拖入“表输入”、“表输出”两个组件即可
4、 执行转换对数据进行抽取
5、 查看结果是否与数据源中的数据是否一致
注:如果Kettle是英文版,可以通过“菜单栏”—“编辑”—“选项”—“观感”—“缺省语言”设置为“Simplified Chinese”—“确定”—“重启Kettle”。
(图4.0)
步骤1、创建转换
(图4.1)
说明:
当创建转换时点击“核心对象”下方则显示可以在转换中能使用的所有组件。点击“输入”--单击“表输入”把“表输入”组件往空白处拖入即可。
(图4.2)
说明:
双击“表输入”组件弹出(图4.2),输入或选择相应的参数信息。
步骤名称:默认为“表输入”,如果想规范化建议填写源表名称信息,以便清楚查询是某张表结构信息
数据库连接:选择数据来源数据源名称
SQL:编写查询源数据SQL脚本,可以通过“获取SQL查询语句…”获取。
允许延迟转换:强烈建议默认
替换SQL语句里的变量:如果SQL语句中有使用到变量则需要勾选
从步骤插入数据:默认
执行每一行:默认
记录数量限制:0表示默认,如果有特殊需求可以自定义只查询出多少条记录数
注:
1、 在SQL语句中一定不能加入分号(;),这是初学者很容易犯错的一个地方。
2、 如果无法确定SQL语句是否正常时可以通过“预览”来查看SQL语句是否正确。
(图4.3)
说明:
有了源之后则需要有目标,也就是说有我水我们则需要把水通过渠道通向目标如(图4.3)
拖入“表输出”后,我们通过按住“Shift”键单击源划向目标“表输出”,则会出现源指向目标的箭头线。双击“表输出”如(图4.3),另外可以选择两个或者两个以上的组件进行位置对齐,可以通过Ctrl+向上箭头、Ctrl+向下箭头、Ctrl+向左箭头、Ctrl+向右箭头。
步骤名称:默认为“表输入”,如果想规范化建议填写目标表名称信息,以便清楚查询是某张表结构信息
数据库连接:选择数据来目标数据源名称
目标模式:schema,Oracle数据库则是用户名。
目标表:从源数据输出到目标表名
提交记录数:设置数据库提交大小
裁剪表:清空目标表数据,相当于Oracle数据库Truncate语法
忽略插入错误:当插入数据库出错时则可以忽略,默认忽略18条记录数,记不太清楚
Specify database fields:手动指定源与目标字段映射关系,如(图4.4)
Main options:如果是表分区则可以指定表分区,一般为默认
Database fields:如(图4.4)
(图4.4)
说明:
指定源与目标字段映射关系,点击“Guees”根据指定规则来匹配字段映射关系,规则有两中:一种根据源字段名称来匹配,一种是根据目标字段来匹配。
注:在没有勾选“Specify databasefields”情况下,源表字段不能多于目标表的字段数量,否则会出错。
(图4.5)
说明:
运行转换(F9)时会弹出(图4.5),可以根据需求自定义运行日志。后续会详细说明。
1、参数日志级别设置
2、局部变量参数设置
3、全局变量参数设置
4、系统参数设置
(图4.6)
说明:
根据(图4.6)可以查看出转换运行的日志情况。
(图4.7)
说明:
根据(图4.7)可以查看出每个步骤执行的记录数、读、写、输入、输出、更新、拒绝、错误、激活、时间、速度。
可以通过查看此处分析当前转换运行效率而断定转换是否需要进行优化。
总结:
1、 在运行转换时,当前转换是处于并发状态,如果有多个表输入则会同时运行。
2、 在设计转换时最好是一个数据流,不要有多条数据流。如果有多条数据流则有可能发生锁表问题。