Kettle工具的简单使用

全文共:3979字 预计阅读时间:10分钟

Kettle在ETL中用得还比较多,其中ETL是EXTRACT(抽取)、TRANSFORM(转换)、LOAD(加载)的简称,实现数据从多个异构数据源加载到数据库或其他目标地址,是数据仓库建设和维护中的重要一环也是工作量较大的一块。Kettle是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。

Kettle 中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。

因为主要在Windows平台上实施,所有以下问题均在Windows 服务上操作。

一、安装及配置

1、下载Kettle

http://sourceforge.net/projects/pentaho/files/Data%20Integration/7.1/pdi-ce-7.1.0.0-12.zip/download

2、本地安装jdk:1.8或以上版本

【下载地址】

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

3、配置java环境变量

3.1 、环境变量配置地址

打开我的电脑--属性--高级--环境变量

3.2 、新建系统变量JAVA_HOME和CLASSPATH

变量名:JAVA_HOME

变量值:C:Program FilesJavajdk1.8.0_191 [具体路径以自己本机安装目录为准]

变量名:CLASSPATH

变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libools.jar;

3.3 、修改变量路径

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

变量名:Path

变量值:%JAVA_HOME%bin;%JAVA_HOME%jrein;

3.4 、配置kettle环境变量

在系统的环境变量中添加KETTLE_HOME变量,目录指向kettle的安装目录: E:pdi-ce-7.1.0.0-12data-integration

说明:安装完成,可启动程序:Spoon.bat 路径为:E:pdi-ce-7.1.0.0-12data-integration

二、操作步骤

1. 步骤说明:

此工具的用于两个数据库数据同步;故需在目标库中建立与源数据库需同步相同的数据表:

I、先将对应的交易表数据对应同步过来;

II、再将同步后的交易表中BAID转换成社保系统账户对应DXID:T_zj_balist_2018;

1. 银行账户对应关系映射

1.1 创建映射表

在社保系统执行下列语句创建社保系统与省公司系统银行账户dxid映射关系。、

2. 维护映射关系

将社保业务系统银行账户DXDM、省公司系统银行账户DXID、社保系统银行账户DXID,维护至映射表T_ZJJK_ACC_MAPPED对应的DXDM、DXID、SDXID字段。

3. 同步交易表数据,从省公司系统—>社保系统;

1、新建转换

路径:文件—新建—转换如下图:

建立之后,文件-保存,将转换接命名保存。

2、新建DB连接

页签【主对象树】,选中“DB连接”,右键【新建】。

输入[连接名称]、[主机名称]、[数据库名称]、[端口号]、[用户名]、[密码]

,如下图:(建立数据库连接和其他数据库管理软件连接)

说明:建立两个,需同步数据的连个数据库(源数据库省公司系统及目标数据库社保系统)

3、建立连接

页签【核心对象】

Step1:输入下,选择“表输入”,拖入右侧

Step2:输出下,选择“插入/更新”,拖入右侧

Step3:鼠标选中表输入,按住“shift”,滑动到插入/更新,将两个控件用线关联起来

Step4:双击“表输入”,填写相关信息如下:

其中的SQL语句:

Step5:双击插入/更新,填写相关信息如下:

目标表为:(迁移对应的管控中表T_ZJ_BALIST_2018)

查询关键字段为:(作为唯一标示判断重复数据,TRANSID)

更新字段值:点击获取和更新字段

表字段为:目标表字段;流字段为:源表字段;

设置完成,可点击【启动】,直接进行数据转换。成功之后,可再下方列表中,到输入的条数及输出的条数。

解释:

【输入】是指从源数据库中,往此工具中写入的数据;

【输出】是指从此工具生成的中间文件中,往目标数据库中输出去的数据条数。

请再次进行保存

4. 更新交易表BAID

4.1、新建转换

路径:文件—新建—转换如下图:

建立之后,文件-保存,将转换接命名保存。

4.2、 新建DB连接

页签【主对象树】,选中“DB连接”,右键【新建】。

输入[连接名称]、[主机名称]、[数据库名称]、[端口号]、[用户名]、[密码] ,如下图:(建立数据库连接和其他数据库管理软件连接)

说明:建立一个,社保系统数据库

4.3、建立连接

页签【核心对象】

Step1:输入下,选择“表输入”,拖入右侧

Step2:输出下,选择“更新”,拖入右侧

Step3:鼠标选中表输入,按住“shift”,滑动到插入/更新,将两个控件用线关联起来

Step4:双击“表输入”,填写相关信息如下:

数据库连接选择社保系统;

其中的SQL语句为:

Step5:双击更新,填写相关信息如下:

数据库连接为:社保系统

目标表为:(同步过来的交易表T_ZJ_BALIST_2018)

更新字段值:表字段BAID,流里的字段DXID

表字段为:目标表字段;流字段为:源表字段;

设置完成,可点击【启动】,直接进行数据转换。成功之后,可再下方列表中,到输入的条数及输出的条数。

请再次进行保存

4.4 建立作业(自动同步设置)

4.4.1、新建作业

路径:文件—新建—作业,如下图:

建立之后,文件-保存,将转换接命名保存。

4.4.2、新建作业任务

页签【核心对象】

Step1:通用下,选择“START”,和“转换”(两个)拖入右侧

Step2:鼠标选中START,按住“shift”,滑动到转换,将三个控件用线关联起来

Step3:双击“START”,填写相关信息如下:

设置执行的频率及时间,

Step4:双击“转换”,填写相关信息如下:

转换1选择同步交易表数据的转换文件,转换2选择更新交易表的转换文件,先1后2按步骤执行。

请再次进行保存

Step5:执行:

点击执行,可查询执行情况

4.4.3、停止作业任务

点击停止按钮

三、检查项及问题处理

1、 检查变量配置

按路径:打开我的电脑--属性--高级--环境变量,检查上述变量配置是否正确;

2 、检查JDK版本

打开cmd(运行)界面,输入:Java –version 查看JDK是否目前识别为1.8版本,如下图:

2、 若启动不起来,可修改本机内存大小

配置文件路径: E:pdi-ce-7.1.0.0-12data-integration 文件名称:Spoon.bat 右键编辑

默认大小为1024,可修改为其他值,当配置环境内存较小时可修改为“512”,当配置环境内存较大时可以用“1024”或者设置更大值,如下图:

说明:若可直接启动程序,则无需修改。

4、数据库连接报错

4.1、启动kettle的spoon,新建作业,配置jdbc的oracle数据源连接,报找不到驱动:

解决办法:

1、下载OJDBC-X.jar包

2、将ojdbc-x.jar 放在lib目录下。

3、重启kettle,重新配置数据源连接。

4.2、连接数据源时报错:

Listener refused the connection with the following error:ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

原因:jdbc连接数据库的时候,需要使用数据库的sid_name,而不是数据库的services_name;

可在数据库中查询:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190112G05A0K00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券