全文共: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;
可在数据库中查询:
领取专属 10元无门槛券
私享最新 技术干货