建议收藏 | 可视化ETL平台--Kettle

Kettle的介绍

学习目标

  • 知道什么是ETL及Kettel是开源的ETL工具

  • 了解kettle环境的安装流程

1.ETL介绍

ETL(Extract-Transform-Load的缩写,即数据==抽取、转换、装载==的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少的,Kettle就是强大的ETL工具。

Kettle是一款国外开源的ETL工具。

2.Kettle介绍

kettle 是纯 java 开发,开源的 ETL工具,用于数据库间的数据迁移 。可以在 Linux、windows、unix 中运行。有图形界面,也有命令脚本还可以二次开发。

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

kettle 的官网是 https://community.hitachivantara.com/docs/DOC-1009855

github 地址是 https://github.com/pentaho/pentaho-kettle

3.Kettle环境搭建

==这边以 windows 下的配置为例,linux 下配置类似。==

jdk版本:jdk1.8.0版本 kettle版本:pdi-ce-9.0版本 MySQL版本:MySQL-8.0

3.1. jdk 安装

由于 kettle 是基于 java 的,因此需要安装 java 环境,并配置 JAVA_HOME 环境变量。

注意:

  • 建议安装 JDK1.8 及以上,7.0以后版本的 kettle 不支持低版本 JDK。

  • Java官网:Java Downloads | Oracle

  • 课程以jdk-8u241-windows-x64版本为例。

步骤如下:

(1)找到资料/安装包中的jdk软件安装包,双击打开。

(2)点击 「下一步」按钮

(3)将路径修改为 c:\opt\jdk1.8.0_241,点击「确定」按钮

(4)点击「下一步」,等待进度条完成。

(5)在新弹出的窗口中,点击「更改」按钮,将JRE的安装路径修改为 c:/opt/jre1.8.0_241。

注意:碰到以下错误可以忽略(是因为机器名中包含了一些JDK不识别的支付)

(6)点击「关闭」完成安装。

3.2环境变量添加

我们需要给计算机配置环境变量JAVA_HOME。

作用:它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。

配置方法:在系统变量里点击新建,变量名填写JAVA_HOME,变量值填写JDK的安装路径。

步骤如下:

(1)找到jdk的安装目录,复制其路径,如果不清楚自己安装的位置,可以采用如下方式:

在搜索栏搜索java.exe,找到并且定位到java.exe文件,将地址栏内容进行复制。

jdk的安装路径即为bin目录之前的目录结构:D:\development\java

(2)找到此电脑右键点击选择属性,弹出如下界面,选择高级系统设置,不同版本系统位置可能不太一样,耐心寻找一下。

(3)进入高级系统设置之后,点击环境变量按钮,即可进入环境变量配置界面。

(4)找到系统变量,选择新建,将JAVA_HOME填写到变量名中,将刚才的复制的jdk安装路径粘贴到变量值内,点击确定完成环境变量添加。

(5)在系统变量里找到Path变量,这是系统自带的,不用新建。双击Path,由于原来的变量值已经存在,故应在已有的变量后加上:

%JAVA_HOME%\bin

%JAVA_HOME%\jre\bin

(6) 检测环境变量是否配置成功,在底部搜索栏输入cmd,按Enter键唤出终端窗口。

输入java,输出如下内容则配置成功。

3.2kettle安装

kettle官网下载地址:Home - Hitachi Vantara

kettle也可以到可以到https://sourceforge.net/projects/pentaho/files/下载

安装步骤如下:

(1)先将kettle下载到本地。

(2)解压Kettle(解压到非中文目录)

(3)进入解压后的文件夹data-integration,双击Spoon.bat,启动kettle。

注意:

  • 由于 kettle 需要连接数据库,因此需要下载对应的数据库驱动。

  • 例如:MySQL 数据库需要下载 mysql-connector-java.jar(在Windows中安装MySQL时已经自动安装)

  • ==课程基于 pdi-ce-9.0.0.0-423 版本进行介绍==,低版本可能有区别。

Mac OS系统安装请参考:《Mac版本kettle环境安装》

4.小结

  • ETL即数据==抽取、转换、装载==的过程。

  • kettle 是纯 java 开发,开源的 ETL工具,用于数据库间的数据迁移 。

  • 安装kettle前需要先安装jdk以及配置环境变量

kettle数据转换

学习目标

  • 知道什么是kettle的数据转换

在开发中,数据不是单一形式的,我们常见的数据形式有很多,比如:Excel,TXT,CSV等本地数据,以及Mysql数据库,Oracle,HIVE,redis,等服务其数据。

那么我们为了能够让数据在同一个空间或平台上进行运算,处理,统计,分析,预测等工作,就需要频繁的对数据进行转换,而kettle就为我们提供了这样一种快速,可靠的可视化转换形式。

ketlle可以在多种数据源之间进行快速转换。

Kettle的基本开发步骤

  • 新建转换

  • 构建Kettle的数据流图

  • 配置数据流图中的各个组件

  • 保存并启动执行

txt数据转换Excel数据

学习目标

  • 熟悉使用kettle将txt数据转换为Excel数据的操作步骤。

1.需求

小A现在有一个txt文件,文件内容如下:

 
 
 
 

id,name,age,gender,province,city,region,phone,birthday,hobby,register_date
392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2018-8-6 9:44
267456198006210000,李四,25,1,河南省,郑州市,郑东新区,18681109672,1980-6-21,音乐;阅读;旅游,2017-4-7 9:14
892456199007203000,王五,24,1,湖北省,武汉市,汉阳区,18798009102,1990-7-20,写代码;读代码;算法,2016-6-8 7:34
492456198712198000,赵六,26,2,陕西省,西安市,莲湖区,18189189195,1987-12-19,购物;旅游,2016-1-9 19:15
392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2018-8-6 9:44
392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2018-8-6 9:44

我们需要使用Kettle将这个文件中的数据抽取出来,然后装载到Excel中。

2.新建转换

想要进行数据转换,我们首先要做的事情就是新建一个转换文件,我们点击窗口上的文件>>新建>>转换。

然后将需要的转换方式拖拽到右侧面板并运行即可完成转换

==也可以直接使用快捷键创建:Ctrl + N==

3.构建Kettle的数据流图

要使用Kettle来进行数据处理,首先要做的是构建Kettle的数据流图,也就是用可视化操作像排积木的方式,把要做的事情排列出来。

(1)将左边的核心对象中的输入文件夹下的文本文件输入 拖拽到中间空白区域。

(2)从输出文件夹中将Excel输出 组件拖拽到中间空白区域。

(3)按住Shift键点击 文本文件输入组件,移动鼠标到Excel输出,然后释放鼠标,这样就可以将两个组件连接到一起。

4.配置数据流图中的各个组件

现在数据流的转换方式与转换方向已经确定,接下来要做的就是,配置每个组件,微调参数。

4.1 配置文件文本输入组件

(1)双击文本文件输入组件,在弹出窗口中点击「浏览」按钮。

(2)选择 资料/测试数据 中的 user.txt 文件。

(3)点击「增加」按钮,将文件加入到要抽取的数据中来。注意:不点添加按钮,将不会抽取数据。

(4)点击「内容」选项卡,将分隔符修改为逗号(注意是英文状态的逗号),将编码方式修改为:UTF-8。

(5)点击「字段」选项卡,再点击「获取字段」按钮,可以读取到txt文件中的所有字段。

(6)点击「预览记录」按钮,查看Kettle是否能够读取到 user.txt 中的数据。

显示预览内容:

(7)点击「确定」按钮保存,文本文件输入组件配置完成。

4.2 配置Excel输出组件

(1)双击 Excel输出组件,在弹出窗口中点击「浏览」按钮。

(2)点击「内容」选项卡,设置要将Excel文件输出到哪儿的路径,然后点击确定,再删除文件后缀xls。

(3)点击「字段」选项卡,再点击「获取字段」,将age的格式设置为0,表示只输出不带小数点的数字。

5.保存并启动执行

(1)点击工具条上方的保存按钮,或者按快捷键Ctrl + s。

(2)Kettle会提示让我们保存该数据流图(转换),我们保存到一个指定位置即可,然后点击「保存」按钮即可。

 

(3)点击工具栏上的播放按钮启动执行。

执行完成后,组件右上角有一个绿色的对勾。

(4)执行完后,我们可以到指定的位置,发现Excel文件已经生成,可以看到里面的内容。

6.小结

  • txt转换Excel数据使用到的组件为:

  • 文件文本输入

  • Excel输出

  • 操作步骤为:

  • 新建转换

  • 构建kettle的数据流图

  • 配置数据流图中的各个组件

  • 保存并启动执行

Excel数据转换MySQL数据

学习目标

  • 熟悉使用kettle将Excel数据转换MySQL数据的操作步骤。

1.提取需求

公司来了有个漂亮的程序员小姐姐叫小花,她刚大学毕业,项目经理安排她这样一项工作:

有这样一个Excel文件:user.xls,这个文件内容是这样的。

项目经理想要让她将这些数据导入到MySQL中来。小花刚来,急得团团转,不知所措,机会来了。

最终需求:

需要从Excel中将这些用户的数据,使用Kettle抽取到MySQL中

2.准备工作

为了完成本案例,我们需要准备以下几件工作:

2.1 找到小花的Excel文件

在input文件夹中可以找到user.xlsx文件

2.2 在MySQL数据库中创建数据库

为了方便将Excel文件中的数据抽取到MySQL中,我们必须要创建一个名字叫kettle_demo的数据库,后续Excel中的数据会装载到该数据库的表中。

(1)在DataGrip中右键点击MySQL连接,选择New>>Query Console

(2)在Datagrip中书写SQL语句并运行,我们可以看到kettle_demo数据库名称就已经创建好了。

 
 
 
 

# 创建新的数据库,数据库名称为kettle_demo,字符集为utf8
CREATE DATABASE kettle_demo CHARACTER SET utf8;

(3)在kettle中加载MySQL驱动。

Kettle要想连接到MySQL,必须要安装一个MySQL的驱动,就好比我们装完操作系统要安装显卡驱动一样。加载MySQL驱动只需以下三步:

  • 将资料中的 MySQL jdbc 驱动包mysql-connector-java-8.0.13.jar导入到 data-integration/lib中。

  • 找到 data-integration\simple-jndi\jdbc.properties 文件编辑,在末尾加上连接信息:

 
 
 
 

MYSQL_DB/type=javax.sql.DataSource
MYSQL_DB/driver=com.mysql.cj.jdbc.Driver
MYSQL_DB/url=jdbc:mysql://localhost:3306/kettle_demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
MYSQL_DB/user=root
MYSQL_DB/password=123456

注意:==账号,密码以及数据库名称根据实际情况进行更改。==

  • 重启Kettle即可。

3.新建转换

想要进行数据转换,我们首先要做的事情就是新建一个转换文件,我们点击窗口上的文件>>新建>>转换。

然后将需要的转换方式拖拽到右侧面板并运行即可完成转换

==也可以直接使用快捷键创建:Ctrl + N==

4.构建Kettle的数据流图

要使用Kettle来进行数据处理,首先要做的是构建Kettle的数据流图,也就是用可视化操作像排积木的方式,把要做的事情排列出来。

(1) 从左边的核心对象中,分别拖入「输入/Excel输入」、「输出/表输出」两个组件到中间区域

(2)然后按住Shift键,在 「Excel输入」组件上点击鼠标左键,拖动到「表输出」组件上,连接两个组件,这样数据流图就构建好了

5.配置数据流图中的各个组件

刚刚已经把数据流图构建好了,那么Kettle就可以将Excel文件中的数据抽取到MySQL中吗?

显然是不行的。Kettle根本不知道要将哪个Excel文件中的数据,抽取到哪个MySQL中。我们需要配置这两个组件,告诉Kettle从哪个Excel文件中抽取,以及将数据装载到哪个MySQL中。

5.1 配置Excel输入组件

(1)双击Excel输入组件,会弹出一个对话框,我们可以再该对话框中配置该组件。

(2)因为此处要抽取的Excel文件为Excel 2007版本,所以指定表格类型为Excel 2007 XLSX (Apache POI)。

(3)随后我们需要找到要抽取的那个Excel文件,点击「浏览」按钮,找到 「资料/测试数据/user.xlsx」文件。

(4)再点击旁边的「增加」按钮,切记:一定要点击增加按钮哦!否则没有效果!

(5)在弹出菜单中,点击「Sheet1」工作簿,并点击 「>」 按钮移动到右边。

(6)点击「字段」选项卡,点击「获取来自头部数据的字段...」按钮,Kettle会从Excel中读取第一行字段名称。

(7)将 age 字段的格式设置为#,register_date的格式设置为 yyyy-MM-dd HH:mm:ss。

(8)点击「预览记录」按钮查看抽取到的数据。

(9)点击「确定」按钮保存。

5.2 配置MySQL组件

要使用Kettle操作MySQL,必须要建立Kettle与MySQL的连接,否则Kettle也不知道操作哪个MySQL库。

(1)双击「表输入」组件,会自动弹出配置窗口,点击「新建」按钮。

(2)配置MySQL连接

  • 输入连接名称,此处用mysql_开头,数据库名称kettle_demo为结尾

  • 在连接类型列表中,选择MySQL

  • 输入连接方式:JNDI

  • JNDI名称填写:MYSQL_DB

(3)点击测试按钮,测试Kettle是否能够正确连接到MySQL

(4)点击确认保存,到这里数据库连接就应该创建好了。

5.3 使用Kettle在MySQL中自动创建表

要保存数据到MySQL,必须先要创建好表。那么,我们是否需要自己手动在MySQL中创建一个表,用来保存Excel中抽取过来的数据呢?

答案是:不需要。Kettke可以自动为我们在MySQL中创建表。

(1)输入目标表的名称为:t_user,后续Kettle将在MySQL中创建一张名为 t_user 的表格。

(2)点击下方的「SQL」按钮,可以看到Kettle会自动帮助我们生成MySQL创建表的SQL语句,我们将age和gender字段的数据类型改为INT类型。

(3)点击执行按钮。Kettle将会让MySQL执行该SQL脚本。执行完后,可以在DataGrip中刷新在数据库,可以查看到Kettle帮助我们创建的t_user表。

(4)点击「确定」按钮,保存配置。

6.保存并启动执行Kettle转换

(1)点击保存按钮保存转换。

(2)点击工具栏上的播放按钮启动执行。

(3)执行成功后,可以看到以下界面。组件上都显示了绿色的对号,执行结果中可以看到:转换完成!日志,说明Kettle的转换已经执行成功!!

7.确认执行结果

Kettle是否已经帮助我们将Excel中的数据抽取并装载到MySQL呢?

我们需要到MySQL中看一看,t_user表中是否有数据呢。

在DataGrip中双击 t_user 表格,可以看到Excel中的数据都已经抽取到了MySQL。

 

到这里,恭喜你,程序员小姐姐小花的问题你已经帮她解决了,晚上让她请你吃个饭吧。

8.小结

  • Excel数据转换MySQL数据使用到的组件为:

  • Excel输入

  • 表输出

  • 操作步骤为:

  • 新建转换

  • 构建kettle的数据流图

  • 配置数据流图中的各个组件

  • 保存并启动执行

  • 使用kettle连接MySQL需要先下载驱动并配置数据

  • 连接MySQL后,可以使用Kettle在MySQL中自动创建表

Excel数据转换MySQL数据

学习目标

  • 熟悉使用kettle将Excel数据转换MySQL数据的操作步骤。

1.提取需求

公司来了有个漂亮的程序员小姐姐叫小花,她刚大学毕业,项目经理安排她这样一项工作:

有这样一个Excel文件:user.xls,这个文件内容是这样的。

 

项目经理想要让她将这些数据导入到MySQL中来。小花刚来,急得团团转,不知所措,机会来了。

最终需求:

需要从Excel中将这些用户的数据,使用Kettle抽取到MySQL中

2.准备工作

为了完成本案例,我们需要准备以下几件工作:

2.1 找到小花的Excel文件

在input文件夹中可以找到user.xlsx文件

2.2 在MySQL数据库中创建数据库

为了方便将Excel文件中的数据抽取到MySQL中,我们必须要创建一个名字叫kettle_demo的数据库,后续Excel中的数据会装载到该数据库的表中。

(1)在DataGrip中右键点击MySQL连接,选择New>>Query Console

(2)在Datagrip中书写SQL语句并运行,我们可以看到kettle_demo数据库名称就已经创建好了。

 
 
 
 

# 创建新的数据库,数据库名称为kettle_demo,字符集为utf8
CREATE DATABASE kettle_demo CHARACTER SET utf8;

(3)在kettle中加载MySQL驱动。

Kettle要想连接到MySQL,必须要安装一个MySQL的驱动,就好比我们装完操作系统要安装显卡驱动一样。加载MySQL驱动只需以下三步:

  • 将资料中的 MySQL jdbc 驱动包mysql-connector-java-8.0.13.jar导入到 data-integration/lib中。

  • 找到 data-integration\simple-jndi\jdbc.properties 文件编辑,在末尾加上连接信息:

 
 
 
 

MYSQL_DB/type=javax.sql.DataSource
MYSQL_DB/driver=com.mysql.cj.jdbc.Driver
MYSQL_DB/url=jdbc:mysql://localhost:3306/kettle_demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
MYSQL_DB/user=root
MYSQL_DB/password=123456

注意:==账号,密码以及数据库名称根据实际情况进行更改。==

  • 重启Kettle即可。

3.新建转换

想要进行数据转换,我们首先要做的事情就是新建一个转换文件,我们点击窗口上的文件>>新建>>转换。

然后将需要的转换方式拖拽到右侧面板并运行即可完成转换

==也可以直接使用快捷键创建:Ctrl + N==

4.构建Kettle的数据流图

要使用Kettle来进行数据处理,首先要做的是构建Kettle的数据流图,也就是用可视化操作像排积木的方式,把要做的事情排列出来。

(1) 从左边的核心对象中,分别拖入「输入/Excel输入」、「输出/表输出」两个组件到中间区域

(2)然后按住Shift键,在 「Excel输入」组件上点击鼠标左键,拖动到「表输出」组件上,连接两个组件,这样数据流图就构建好了

5.配置数据流图中的各个组件

刚刚已经把数据流图构建好了,那么Kettle就可以将Excel文件中的数据抽取到MySQL中吗?

显然是不行的。Kettle根本不知道要将哪个Excel文件中的数据,抽取到哪个MySQL中。我们需要配置这两个组件,告诉Kettle从哪个Excel文件中抽取,以及将数据装载到哪个MySQL中。

5.1 配置Excel输入组件

(1)双击Excel输入组件,会弹出一个对话框,我们可以再该对话框中配置该组件。

(2)因为此处要抽取的Excel文件为Excel 2007版本,所以指定表格类型为Excel 2007 XLSX (Apache POI)。

(3)随后我们需要找到要抽取的那个Excel文件,点击「浏览」按钮,找到 「资料/测试数据/user.xlsx」文件。

(4)再点击旁边的「增加」按钮,切记:一定要点击增加按钮哦!否则没有效果!

(5)在弹出菜单中,点击「Sheet1」工作簿,并点击 「>」 按钮移动到右边。

(6)点击「字段」选项卡,点击「获取来自头部数据的字段...」按钮,Kettle会从Excel中读取第一行字段名称。

(7)将 age 字段的格式设置为#,register_date的格式设置为 yyyy-MM-dd HH:mm:ss。

(8)点击「预览记录」按钮查看抽取到的数据。

(9)点击「确定」按钮保存。

5.2 配置MySQL组件

要使用Kettle操作MySQL,必须要建立Kettle与MySQL的连接,否则Kettle也不知道操作哪个MySQL库。

(1)双击「表输入」组件,会自动弹出配置窗口,点击「新建」按钮。

(2)配置MySQL连接

  • 输入连接名称,此处用mysql_开头,数据库名称kettle_demo为结尾

  • 在连接类型列表中,选择MySQL

  • 输入连接方式:JNDI

  • JNDI名称填写:MYSQL_DB

(3)点击测试按钮,测试Kettle是否能够正确连接到MySQL

(4)点击确认保存,到这里数据库连接就应该创建好了。

5.3 使用Kettle在MySQL中自动创建表

要保存数据到MySQL,必须先要创建好表。那么,我们是否需要自己手动在MySQL中创建一个表,用来保存Excel中抽取过来的数据呢?

答案是:不需要。Kettke可以自动为我们在MySQL中创建表。

(1)输入目标表的名称为:t_user,后续Kettle将在MySQL中创建一张名为 t_user 的表格。

(2)点击下方的「SQL」按钮,可以看到Kettle会自动帮助我们生成MySQL创建表的SQL语句,我们将age和gender字段的数据类型改为INT类型。

(3)点击执行按钮。Kettle将会让MySQL执行该SQL脚本。执行完后,可以在DataGrip中刷新在数据库,可以查看到Kettle帮助我们创建的t_user表。

(4)点击「确定」按钮,保存配置。

6.保存并启动执行Kettle转换

(1)点击保存按钮保存转换。

(2)点击工具栏上的播放按钮启动执行。

 

(3)执行成功后,可以看到以下界面。组件上都显示了绿色的对号,执行结果中可以看到:转换完成!日志,说明Kettle的转换已经执行成功!!

7.确认执行结果

Kettle是否已经帮助我们将Excel中的数据抽取并装载到MySQL呢?

我们需要到MySQL中看一看,t_user表中是否有数据呢。

在DataGrip中双击 t_user 表格,可以看到Excel中的数据都已经抽取到了MySQL。

到这里,恭喜你,程序员小姐姐小花的问题你已经帮她解决了,晚上让她请你吃个饭吧。

8.小结

  • Excel数据转换MySQL数据使用到的组件为:

  • Excel输入

  • 表输出

  • 操作步骤为:

  • 新建转换

  • 构建kettle的数据流图

  • 配置数据流图中的各个组件

  • 保存并启动执行

  • 使用kettle连接MySQL需要先下载驱动并配置数据

  • 连接MySQL后,可以使用Kettle在MySQL中自动创建表

猜你喜欢

转载自blog.csdn.net/Blue92120/article/details/131696668