数据迁移工具Kettle

背景知识

(1) 什么是ETL

 ETL是Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程。

(2) Kettle简介

 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。我们常用它定时将一些库的数据稍做转换后存入其它库。

(3) 工作机制

 Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

安装和运行

(1) 安装

 kettle的最新下载地址:http://community.pentaho.com/projects/data-integration/ 我在linux下安装,机器之前已装好java环境,将下载的安装包解压到/usr/local目录下。

 另外,还需要安装对应数据库的支持,比如我使用mysql数据库,则需要下载mysql-connector-java-5.1.41-bin.jar放到/usr/local/kettle/data-integration/lib目录下。

(2) 启动图形界面

 kettle提供图形界面和命令行两种方式,图形界面主要用于配置和测试,命令行主要用于运行。

准备工作

 一般使用kettle主要是导数据,因此以数据库作为实例,选建立数据库环境。如果只使用最简单的调度,也可以不使用数据库;如果已安装数据库,请忽略安装数据库,要建表即可。

(1) 安装mysql数据库

(2) 建库建表

一个简单的作业调度

(1) 建立一个变换Transformation

i. 新建一个变换

 在Kettle界面上:菜单->New->Transformation

ii. 加一个输入库

 主界面:左侧->Input->Table Input,拉到工作区建立新的table input。

 双击table input,调出其编辑界面。

 在编辑界面点Connection->New,建立一个数据库连接。

 在连接界面,Connection Type选MySQL,设置Host Name: 127.0.0.1, Database Name: test_db, Port Number: 3306, User Name: root, Password:你的密码,Connection Name:test1,此时点Test,可查看数据库是否连接成功,如果成功,点OK建立连接。

 在Table Input编辑界面,选Get SQL select statement…,从库中选择你所要输入的表table1,此时自动生成了select查询语句(这就是kettle方便的地方,不用手敲,自动生成语句,简单编辑即可),选OK确定。

iii. 加一个输出库

 主界面:左侧->Output->Table Output,拉到工作区建立新的table output。

 双击table output,调出其编辑界面。

 在编辑界面,Conection中选择刚才建立的数据库连接test1,Target table选中table2,点OK确定。

iv. 连接输入和输出,并测试

 可以看到数据库table1中的数据已经被复制到table2中,此时一个Transformation就完成了。

(2) 建立一个工作流Job

i. 新建一个Job

 在Kettle界面上:菜单->New->Job

ii. 加入模块

 主界面:左侧->General->START,拖出一个START(可以设定执行时间)

 主界面:左侧->General->Transformation,拖出一个,双击调出编辑界面,Browse选刚才保存的test_trans文件,点OK确认。

 主界面:左侧->General->Success,拖出一个Success

iii. 连接模型,并测试

(3) 变量和选择分支

i. 新建一个变换

 在Kettle界面上:菜单->New->Transformation。

ii. 建立变量

 主界面:左侧->Job->Set Variables,拖到主工作区,双击编辑,新建一个变量flag,Default value为1。

iii. 建立选择分支

 主界面:左侧->Flow->Switch/Case,拖到主工作区,双击编辑,在Field name to switch指定变量flag,然后在Case values中加两个值0和1。

  主界面:左侧->Flow->Dummy,拖到主工作区 主界面:左侧->Flow->Abort,拖到主工作区

iv. 连接模型,并测试

 按住Shift依次连线:Set Variables->Switch/Case,Switch/Case连Abort时选This case target value 0,Switch/Case连Dummy时选This case target value 0。

(4) 其它

 除了以上的导库,设变量,分支,以外,常用的还有Java程序模型(左侧Transformation->Steps->User defined Java Class),通常用于在数据库转换过程中做一些sql无法实现的数据变换,同样的,新建时,它也会生成一段基础代码,简单修改即可。

用命令行运行任务

 上面建立的Transformation扩展名为ktr,Job扩展名为kjb,可通过kitchen.sh执行,具体命令是:

 如需不受控制台关闭的影响,可以使用以下命令,使kettle一直在后台运行:

搜索添加公众号:算法学习分享

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

扫码关注云+社区

领取腾讯云代金券