ETL工具Kettle的安装及使用


前言

本文是对一个开源的ETL工具——Kettle(水壶)的介绍。它允许你管理来自不同数据库的数据。

    Trans(转换)和Job(作业)的区别 1) 作业是步骤流,转换是数据流。 2)作业的步骤:必须等前面的步骤都跑完了,后面的步骤才会执行; 转换是一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流从第一个控件开始,一条记录一条记录地流向最后的控件。 Kettle的特点:免费、易配置、图形化界面、支持来自不同数据库的数据、两种脚本文件(trans和job)、定时功能(job里的start组件)。

一、Kettle的组成

1.勺子(Spoon.bat/Spoon.sh)

一个图形化界面,Windows选择Spoon.bat,Linux选择Spoon.sh。

2.煎锅(Pan.bat/Pan.sh)

利用Pan可以使用命令行方式调用Trans

3.厨房(Kitchen.bat/Kitchen.sh)

利用Kitchen可以使用命令行方式调用Job

4.菜单(Carte.bat/Carte.sh)

一个轻量级的Web容器,用于建立专用、远程的ETL Server 特点

二、Kettle的下载安装

下载地址: Kettle中文网:

进入下载页面,点击Download Latest Version即可 注:安装路径不要有中文,以免出错。

下好之后,解压,以Windows系统为例,打开data-integration中的Spoon.bat即进入主界面,如下: 注:需要安装Java环境,并配置环境变量。jdk1.8及以上都可,低版本的话Kettle不支持,会报错 。

三、Kettle的使用

Kettle需要连接数据库才能操作其中的数据,于是就得下载对应的数据库驱动。 比如你要连MySQL 数据库,就得先下载好 mysql-connector-java-**.jar这个驱动包,然后把 它 放在data-integration下面的 lib 文件夹中。如下图所示: MySQL驱动包下载地址:(Select Operating System勾选Platform Independent,然后下载zip文件即可)

实例1. 将MySQL中表user1的数据同步到user2(id相同的数据就更新

两表信息如下所示: 操作过程:

  1. 首先进行数据库连接(以MySQL为例): (文件->新建->数据库连接 或者 转换->DB连接) 连接创建并测试通过后可以在左侧DB连接下右键共享出来。因为在单个作业或者转换中新建的DB连接都是都是局域数据源,在其他转换和作业中是不能使用的,即使属于同一个作业下的不同转换,所以需要把他们共享,这样DB连接就会成为全局数据源,不用多次编辑。

这里有博客写得蛮详细,关于Kettle连接数据库:

  1. 新建一个转换(文件->新建->转换):
  1. 表输入(核心对象->输入->表输入):
  2. 核心对象->输出->插入/更新:
  3. 运行:
  4. 查看效果:

实例2:新建一个作业

这个作业实现的是:将实例1的转换执行完之后再执行一个SQL脚本(向表user2中插入一条数据): 效果:


总结

在整个过程中,遇到了一些问题,找到了一些相关优质回答,特记录于此:

经验分享 程序员 微信小程序 职场和发展