4.1 部分组件介绍:
4.1.1 转换核心对象:
4.1.1.1 表输入
:
位置:在 “输入” 文件夹下。
功能:从数据库表中输入数据,通过 SQL 语句过滤数据。
前提:需要连接数据库。
开发界面:
说明:
1. 如果勾选了 “允许延迟转换”,会发现中文会出现乱码;
2. “记录数量限制” 设置为 0 ,就是没有限制;
3. “从步骤插入数据” 即从前面步骤插入数据到此;
4.1.1.2 插入 / 更新 :
位置:在 “输出” 文件夹下。
功能:基于关键字更新或插入记录到数据库。
前提:需要连接数据库。
开发界面:
说明:
1. 如果勾选 “不执行任何更新”,那么数据库的值不会被更新,只会被插入;
2. 数据库连接、目标表、用来查询的关键字、更新字段即字面意思,不多解释:
4.2 新建转换(此处不使用资源库,采用生成文件的方式):
需求:将源表 T_SOURCE1 的数据插入或者更新到目标表 T_TARGET1中。
数据准备:
源表的数据如下:
ID NAME GENDER AGE
1
StephenG 2 26
4
Guoky 1
25
2
Baiwp 1
23
3
Qiaowj 2
30
id integer y
name nvarchar2(10) y
gender number(2) y
age
number(3) y
update_time timestamp(6) y
实现:
开发过程:
4.2.1 新建转换:
打开Spoon,不连接资源库;
在“主对象树” 中,选中 “转换”,右键,选择“新建”:
会默认新建一个名为 “转换 1” 的转换,且自动跳到 “转换1” 的 “核心对象” 开发界面:
4.2.2 新建“表输入”步骤:
选择 “输入” 下的 “表输入”,鼠标拖着 “表输入”拖拽到右侧 “转换 1” 的区域:
双击 “表输入” 进入编辑界面,如图进行一系列编辑:
步骤名称可以自定义,数据库连接选择源数据表所在的数据库,SQL 语句可以手动输入,也可通过右侧的 “获取SQL查询语句” 进行选择:
此处的 SQL 语句为: SELECT T.*,SYSDATE AS UPDATE_TIME FROM T_SOURCE1 T
如图填写之后,可以点击 “预览” 查看数据来检验 SQL 语句的正确性:
输入预览记录数量:(默认是1000,这个关系不大)
预览结果如下图:
说明 SQL 语句没有问题,关闭此窗口,回到编辑 “表输入” 界面,点击 “确定”,“表输入”步骤完成。
4.2.3 新建 “插入 / 更新” 步骤:
选择 “输出” 下的 “插入 / 更新”,鼠标拖着 “插入 / 更新” 拖拽到右侧 “转换 1” 的区域(操作类似拖拽 “表输入”):如图
连接 “表输入” 和 “插入 / 更新”:
按住键盘 “Shift” 键,鼠标点一下 “表输入”,会出现一条连接线,此时鼠标再点一下 “插入 / 更新”,连接线就会从将 “表输入” 和 “插入 / 更新” 连接起来:
编辑 “插入 / 更新”:
双击 “插入 / 更新”进行编辑,如下图,步骤名称自定义,数据库连接选择目标表所在的数据库,目标表可以手工填,也可以点击右边的 “浏览”选择;
“Commit size”根据实际情况适当修改,默认是 100;(“不执行任何更新”选项已经介绍过)
“用来查询的关键字”:“表字段” 选择 “ID”,“比较符” 选择 “=”,“流里的字段1” 选择 “ID”;
表示目标的字段 ID 和 之前输入的字段(此处是源表)ID进行比较,比较符是 “=”;也可以用 “获取字段”自动获取,然后根据需求修改;
“更新字段”:可以一个一个选择,也可以选择右侧的 “获取和更新字段” 进行自动获取匹配;
Update 表示此字段是否更新,N表示不更新只插入,Y表示既插入也更新;
下图第一张是编辑前,第二个是编辑后:
编辑完成,点击 “确定”,第一个转换就开发好了。
4.2.4 保存转换:
以上,开发好转换之后,保存一下。
由于没有使用资源库,此处保存转换时,会提示生成文件(好像只能是英文路径下英文名,否则保存不了),选择路径,输入文件名,保存即可。
4.2.5 执行转换:
保存之后,就可以执行了,点击
执行按钮,如下图:
在弹出的 “执行转换” 窗口中,点击 “启动”:
启动之后,会在下方出现 “执行结果” 窗口:
可以看到,目标表写入了四条数;可以使用PLSQL查看一下目标表的结果:
开发完全完成。
4.2.6 使用命令行或批处理文件执行转换文件:
以上,我们开发好一个转换之后,生成了一个转换文件 “TEST1.ktr”;
在实际开发中,应该是自动执行,而不是每次手工去GUI界面上点,那么就需要用到两个脚本工具了;
此处先介绍转换使用的工具 pan.bat,此脚本和 Spoon.bat 在同一个路径下。
新建一个 bat 脚本文件 TEST.bat ,内容如下:
e:
cd E:\guokySVN\资料\技术\6. ETL\02.kettle\安装包\pdi-ce-4.0.0-stable\data-integration
Pan.bat /file E:\KETTLE_TEST\TEST3\TEST.ktr /level:Basic>>E:\KETTLE_TEST\TEST3\TEST.log
脚本内容解释:
/level 后跟日志级别以及要生成日志文件的文件名(包括路径)。
双击执行 TEST.bat 文件,即可执行转换,cmd 窗口如下:
日志文件 TEST.log 内容如下:
INFO 02-03 13:04:06,958 - Using "C:\Users\guoky\AppData\Local\Temp\vfs_cache" as temporary files store.
INFO 02-03 13:04:07,223 - Pan - Pan
INFO 02-03 13:04:07,223 - Pan - Pan
INFO 02-03 13:04:07,364 - 转换 1 - 为了转换解除补丁开始 [转换 1]
INFO 02-03 13:04:07,379 - 转换 1 - 这项转换可以被回放 回放日期是: 2017/03/02 13:04:07
INFO 02-03 13:04:08,818 - 表输入 - Finished reading query, closing connection.
INFO 02-03 13:04:08,864 - 表输入 - 完成处理 (I=4, O=0, R=0, W=4, U=0, E=0
INFO 02-03 13:04:09,046 - 插入 / 更新 - 完成处理 (I=4, O=0, R=4, W=4, U=4, E=0
INFO 02-03 13:04:09,048 - Pan - Pan
INFO 02-03 13:04:09,048 - Pan - Pan
INFO 02-03 13:04:09,049 - Pan - Pan
INFO 02-03 13:04:09,050 - 转换 1 -
INFO 02-03 13:04:09,050 - 转换 1 - 进程 表输入.0 成功结束, 处理了 4 行. ( 4 行/秒)
INFO 02-03 13:04:09,050 - 转换 1 - 进程 插入 / 更新.0 成功结束, 处理了 4 行. ( 4 行/秒)
从日志文件内容可以看出,更新了四条数据。
另:结合 windows 任务计划,即可实现自动调度。
下一篇:KETTLE系列5--新建JOB
上一篇:KETTLE系列3--资源库中文乱码异常解决