您的当前位置:首页正文

Kettle使用手册及测试案例

来源:九壹网
一、【kettle】window安装与配置

1、下载kettle包,并解压

2、安装jdk,并配置java环境

a).打开我的电脑--属性--高级--环境变量 b).新建系统变量JAVA_HOME和CLASSPATH 变量名:JAVA_HOME

变量值:C:\\Program Files\\Java\\jdk1.7.0[具体路径以自己本机安装目录为准] 变量名:CLASSPATH

变量值:.;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%\\lib\ools.jar; c). 选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。

变量名:Path

变量值:%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin; 3、配置kettle环境

在系统的环境变量中添加KETTLE_HOME变量,目录指向kettle的安装目录:D:\\kettle\\data-integration

4、启动spoon

Windows直接双击批处理文件 Spoon.bat具体路径为: kettle\\data-integration\\Spoon.bat

Linux 则是执行spoon.sh,具体路径为: ~/kettle/data-integration/spoon.sh

1 / 11

二、 使用Kettle同步数据

同步数据常见的应用场景包括以下4个种类型:

➢只增加、无更新、无删除 ➢只更新、无增加、无删除 ➢增加+更新、无删除 ➢增加+更新+删除

只增加、无更新、无删除

对于这种只增加数据的情况,可细分为以下2种类型: 1) 基表存在更新字段。

通过获取目标表上最大的更新时间或最大ID,在“表输入”步骤中加入条件限制只读取新增的数据。

2) 基表不存在更新字段。 通过“插入/更新”步骤进行插入。

插入/更新步骤选项:

2 / 11

只更新、无增加、无删除

通过“更新”步骤进行更新。

3 / 11

更新选项:

增加+更新、无删除

通过“插入/更新”步骤进行插入。

区别是“插入/更新步骤”中的选项,去掉“不执行任何更新”的勾选:

4 / 11

增加+更新+删除

这种数据同步情况,可细分为以下2种情况: 1) 源库有表保存删除、更新和新增的信息。

通过条件判断,分别进行“插入/更新”和“删除”即可,如下图所示。

5 / 11

2) 源库没有保存增删改信息

Kettle提供了一种对比增量更新的机制处理这种情况,可通过“合并记录”步骤实现,该步骤的输入是新旧两个数据源,通过关键字进行数据值比对,对比结果分为以下4种类型:

“Identical”: 关键字在新旧数据源中都存在,域值相同 “changed”: 关键字在新旧数据源中都存在,但域值不同 “new”: 旧数据源中没有找到关键字 “deleted”: 新数据源中没有找到关键字

两个数据源的数据都进入下一步骤,上述4种结果类型作为输出表的标志字段进行保存。

以下为示例:

➢源数据库测试脚本

create table k1 (f1 varchar2(200),f2 varchar2(200)) truncate table k1;

insertinto k1(f1,f2) values('1','11'); insert into k1(f1,f2) values('2','22'); insert into k1(f1,f2) values('5','5'); commit;

➢目标数据库测试脚本

create table k1 (f1 varchar2(200),f2 varchar2(200)) truncate table k1;

insert into k1(f1,f2) values('1','1');

6 / 11

insert into k1(f1,f2) values('2','2'); insert into k1(f1,f2) values('3','3'); insert into k1(f1,f2) values('4','4'); commit; 合并过程如下:

其中“合并记录”步骤的选项:

执行后,查询K1_TEST结果如下:

7 / 11

可以看到,该结果表的BZ字段保存了更新、删除、新增的记录信息,通过条件分支即可分别对这些记录进行相应的处理。

“条件”选项:

小结

Kettle提供了可视化的设计工具,基本上可通过拖拉配置的方式实现以上4种类型的数据同步,操作上相对较为简单。

数据同步的性能与源数据库、目标数据库以及执行Kettle转换操作的主机相关,在笔者的测试环境上(源数据库和目标数据库部署在双核CPU/4G内存的PC机上、执行Kettle转换操作的主机配置为双核CPUx2/4G内存,JVM内存堆栈为256M)、最后一种类型的数据同步,15w的数据,在3分钟内可以完成。

8 / 11

三、案例

1,把172.17.100.189 中的ca_fwdj.tpf_txqdjb 数据同步到 172.16.1.199中的bank.tpf_txqdjb中。 6w级数据

2,把172.17.100.189 中的ca_fwdj.tpf_jcdjb 数据同步到 172.16.1.199中的bank.tpf_jcdjb中。 14w级数据

3,连接异构数据库,读取MySql数据保存到Oracle数据库中;如果数据转换过程中有异常,可以记录异常信息(可以记录到文件或者数据中,通过二次开发,可以实时以短信的形式提醒)

9 / 11

4,异常日志:

备注:

表输入支持SQL读取数据,支持多表查询。

10 / 11

四、【kettle】JDBC连接oracle报找不到驱动

初次接触kettle,环境都配置好以后,启动kettle的spoon,新建作业,配置jdbc的oracle数据源连接,报找不到驱动。

解决办法:

1、下载OJDBC14.jar包

2、将该包拷贝到kettle的 kettle\\pdi-ce-5.0.1.A-stable\\data-integration\\libswt或者kettle\\pdi-ce-5.0.1.A-stable\\data-integration\\lib 路径下都可以。 3、重启kettle,重新配置数据源连接。问题解

五、【kettle】JDBC连接mysql报找不到驱动

初次接触kettle,环境都配置好以后,启动kettle的spoon,新建作业,配置jdbc的oracle数据源连接,报找不到驱动。

解决办法:

1、下载mysql-connector-java-5.1.6-bin.jar包

2、将该包拷贝到kettle的 kettle\\pdi-ce-5.0.1.A-stable\\data-integration\\libswt或者kettle\\pdi-ce-5.0.1.A-stable\\data-integration\\lib 路径下都可以。 3、重启kettle,重新配置数据源连接。问题解

11 / 11

因篇幅问题不能全部显示,请点此查看更多更全内容