KETTLE系列4--新建转换

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) 
          age number(3) y
          update_time timestamp(6) y

    实现:

  使用 “表输入” 将源表的数据和 sysdate 字段输入;

  使用“插入 / 更新” ,根据 ID 关键字,更新目标表其他所有字段。

   开发过程:


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 

脚本内容解释:

    cd 切换到 pan.bat 所在的目录下;

    执行 pan.bat 脚本,参数 /file 后跟转换文件(ktr 后缀)的文件名(包括路径);

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


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值