4.1 部分组件介绍:

4.1.1 转换核心对象:

4.1.1.1 表输入

kettle工具转java kettle新建转换_Pan


    位置:在 “输入” 文件夹下。 

    功能:从数据库表中输入数据,通过 SQL 语句过滤数据。

    前提:需要连接数据库。

    开发界面:

                   

kettle工具转java kettle新建转换_字段_02

    说明:

             1. 如果勾选了 “允许延迟转换”,会发现中文会出现乱码;

             2. “记录数量限制” 设置为 0 ,就是没有限制;

             3. “从步骤插入数据” 即从前面步骤插入数据到此;

4.1.1.2 插入 / 更新

kettle工具转java kettle新建转换_数据_03

    位置:在 “输出” 文件夹下。 

    功能:基于关键字更新或插入记录到数据库。

    前提:需要连接数据库。

    开发界面:

                       

kettle工具转java kettle新建转换_数据_04

    说明:

             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,不连接资源库;

在“主对象树” 中,选中 “转换”,右键,选择“新建”:


kettle工具转java kettle新建转换_字段_05


会默认新建一个名为 “转换 1” 的转换,且自动跳到 “转换1” 的 “核心对象” 开发界面:


kettle工具转java kettle新建转换_Pan_06


4.2.2 新建“表输入”步骤:

选择 “输入” 下的 “表输入”,鼠标拖着 “表输入”拖拽到右侧 “转换 1” 的区域:


kettle工具转java kettle新建转换_kettle工具转java_07


双击 “表输入” 进入编辑界面,如图进行一系列编辑:

步骤名称可以自定义,数据库连接选择源数据表所在的数据库,SQL 语句可以手动输入,也可通过右侧的 “获取SQL查询语句” 进行选择:

此处的 SQL 语句为: SELECT T.*,SYSDATE AS UPDATE_TIME FROM T_SOURCE1 T


kettle工具转java kettle新建转换_Pan_08


如图填写之后,可以点击 “预览” 查看数据来检验 SQL 语句的正确性:

输入预览记录数量:(默认是1000,这个关系不大)


kettle工具转java kettle新建转换_kettle工具转java_09


预览结果如下图:


kettle工具转java kettle新建转换_Pan_10


说明 SQL 语句没有问题,关闭此窗口,回到编辑 “表输入” 界面,点击 “确定”,“表输入”步骤完成。

4.2.3 新建 “插入 / 更新” 步骤:

选择 “输出” 下的 “插入 / 更新”,鼠标拖着 “插入 / 更新” 拖拽到右侧 “转换 1” 的区域(操作类似拖拽 “表输入”):如图


kettle工具转java kettle新建转换_Pan_11


连接 “表输入” 和 “插入 / 更新”:

按住键盘 “Shift” 键,鼠标点一下 “表输入”,会出现一条连接线,此时鼠标再点一下 “插入 / 更新”,连接线就会从将 “表输入” 和 “插入 / 更新” 连接起来:


kettle工具转java kettle新建转换_Pan_12


编辑 “插入 / 更新”:

双击 “插入 / 更新”进行编辑,如下图,步骤名称自定义,数据库连接选择目标表所在的数据库,目标表可以手工填,也可以点击右边的 “浏览”选择;

“Commit size”根据实际情况适当修改,默认是 100;(“不执行任何更新”选项已经介绍过)

“用来查询的关键字”:“表字段” 选择 “ID”,“比较符” 选择 “=”,“流里的字段1” 选择 “ID”;

表示目标的字段 ID 和 之前输入的字段(此处是源表)ID进行比较,比较符是 “=”;也可以用 “获取字段”自动获取,然后根据需求修改;

“更新字段”:可以一个一个选择,也可以选择右侧的 “获取和更新字段” 进行自动获取匹配;

Update 表示此字段是否更新,N表示不更新只插入,Y表示既插入也更新;

下图第一张是编辑前,第二个是编辑后:


kettle工具转java kettle新建转换_数据_13


kettle工具转java kettle新建转换_数据_14


编辑完成,点击 “确定”,第一个转换就开发好了。


4.2.4 保存转换:

以上,开发好转换之后,保存一下。

由于没有使用资源库,此处保存转换时,会提示生成文件(好像只能是英文路径下英文名,否则保存不了),选择路径,输入文件名,保存即可。


4.2.5 执行转换:

保存之后,就可以执行了,点击

kettle工具转java kettle新建转换_Pan_15

 执行按钮,如下图:


kettle工具转java kettle新建转换_字段_16


在弹出的 “执行转换” 窗口中,点击 “启动”:


kettle工具转java kettle新建转换_kettle工具转java_17


启动之后,会在下方出现 “执行结果” 窗口:


kettle工具转java kettle新建转换_Pan_18


可以看到,目标表写入了四条数;可以使用PLSQL查看一下目标表的结果:


kettle工具转java kettle新建转换_kettle工具转java_19


开发完全完成。


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 窗口如下:


kettle工具转java kettle新建转换_字段_20


日志文件 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--资源库中文乱码异常解决