本章知识简介
主线A: 自连接查询; 主线B: 安装JDK与Kettle; 主线C: 使用Kettle工具.
==本章目标:==
1: 知道使用一张表可以实现自连接查询; [了解]注意: 左表、右表都是同一张表 2: 了解Kettle环境的安装流程; [了解]a.安装JDKb.安装Kettle 3: 熟悉使用kettle将txt数据转换为Excel数据的操作步骤; [重点]a.新建转换b.构建流图c.配置组件d.保存并启动执行 4: 熟悉使用kettle将Excel数据转换为MySQL数据的操作步骤; [重点]a.新建转换 # 配置MySQL与Kettle连接, JNDIb.构建流图c.配置组件d.保存并启动执行 5: 熟悉使用Kettle进行MySQL表间转换的操作步骤。 [了解]a.新建转换b.构建流图c.配置组件d.保存并启动执行
Kettle介绍
[了解]什么是Kettle
==目标:==了解什么是ETL以及Kettel是开源的ETL工具
在大数据开发过程中,有一个【ETL开发工程师】的工作岗位,工作职责是转换、处理各种不同类型的数据格式。
ETL(Extract-Transform-Load的缩写),指的是:数据抽取、转换、加载的过程。
当要了解并掌握使用一款ETL工具时,必不可少的,Kettle就是一个强大的ETL工具。
Kettle是一款开源的ETL工具,由Java语言开发,可用于数据库间的数据迁移。
并可以在Windows、Linux、Unix等系统中运行,运行时有图形界面,也有命令脚本,还支持二次开发。
Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。
通俗地说,Kettle就是用于处理各种不同格式的数据,并按特定格式输出。
kettle官网是 Home - Hitachi Vantara
github地址是 https://github.com/pentaho/pentaho-kettle
当要搭建Kettle开发环境时,要求如下:
(1)jdk1.8.0版本+
(2)MySQL 8.0+
(3)pdi-ce-9.0版本
说明:稍后来搭建Kettle环境。
==总结:==
(1)ETL指的是数据抽取、转换、加载的过程,而Kettle是ETL开发中常见的一个工具;
(2)注意:Kettle底层是使用()语言开发的。A、Python;==B、Java==。
[掌握]安装JDK
==目标:==掌握JDK的安装流程。
由于Kettle是基于java开发的,因此需要安装java环境,并配置JAVA_HOME环境变量。注意:
(1)建议安装JDK1.8及以上,因为Kettle 7.0后的版本不支持低版本的JDK; (2)本课程以jdk-8u241-windows-x64版本为例进行安装说明。
说明:Java官网Java Downloads | Oracle
安装JDK时,有两个重要步骤:
(a)安装JDK
(b)配置JDK的环境变量
说明:当安装完JDK且要让JDK生效,需要对JDK进行配置JAVA_HOME和Path环境变量。
(a)安装JDK的步骤如下:
(1)找到资料/安装包中的jdk软件文件,双击打开
(2)点击「下一步」按钮
(3)将路径修改为C:\opt\jdk1.8.0_241,点击「确定」按钮
(4)点击「下一步」,等待进度条完成
(5)在新弹出的窗口中,点击「更改」按钮,将JRE的安装路径修改为 c:/opt/jre1.8.0_241
(6)点击「关闭」完成安装
(b)配置JDK环境变量的步骤如下:
(1)我们需要给计算机配置环境变量JAVA_HOME。
作用:JAVA_HOME指向的jdk的安装目录,Kettle等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。
配置方法:在系统变量里点击新建,变量名填写JAVA_HOME,变量值填写JDK的安装路径。
(2)找到jdk的安装目录,复制其路径,再找到【此电脑】右键点击选择属性,弹出如下界面,选择高级系统设置,不同版本系统位置可能不太一样,耐心寻找一下。
(3)进入高级系统设置之后,点击【环境变量】按钮,即可进入环境变量配置界面。
(4)找到【系统变量
】,选择【新建
】,将JAVA_HOME填写到变量名中,将刚刚复制的jdk安装路径粘贴到变量值内,点击确定完成环境变量添加。
(5)在系统变量里找到Path变量,这是系统自带的,不用新建。双击Path,由于原来的变量值已经存在,故应在已有的变量后加上:
%JAVA_HOME%\bin %JAVA_HOME%\jre\bin # 可不添加
(6) 检测环境变量是否配置成功,在底部搜索栏输入cmd,按Enter键唤出终端窗口。
输入【java
】、【javac
】、【java -version
】,输出如下内容,则表示配置成功。
例如,一起来完成:
(1)在电脑中安装JDK工具;
(2)配置JAVA_HOME、Path环境变量;
(3)使用命令验证是否成功安装JDK。
==总结:==
(1)若要启动Kettle环境,则必须要安装JDK工具;
(2)请问,安装JDK时除了要配置Path变量外,还必须配置()变量。A、ClassPath;==B、JAVA_HOME==;
[掌握]Kettle安装与启动
==目标:==掌握如何安装与启动Kettle。
当成功安装了JDK后,就可以安装Kettle软件了。
Kettle官网Home - Hitachi Vantara
此外,也可以到网站【https://sourceforge.net/projects/pentaho/files/】中下载Kettle。
说明:为统一管理与使用,Kettle使用老师下发的软件文件。
安装Kettle的步骤如下:
(1)先将kettle下载到本地
(2)解压Kettle到一个非中文目录下
(3)进入解压后的文件夹data-integration中,双击Spoon.bat,用于启动kettle。
(4)当使用Mac OS系统安装与启动Kettle时,解压操作类似,启动时,需要使用命令:
sh ./spoon.sh
说明:详细操作文档请查看【Mac OS系统安装Kettle详解】。
另外的,需要注意的是:
(1)由于kettle需要连接数据库,因此需要下载对应的数据库驱动;例如:MySQL数据库需要下载mysql-connector-java.jar(在Windows中安装MySQL时已经自动安装) (2)本课程基于pdi-ce-9.0.0.0-423版本进行介绍,低版本在使用上可能略微有区别。
例如,一起来完成:
(1)在电脑中解压Kettle压缩文件到一个非中文目录下;
(2)启动Kettle并进入欢迎界面,观察效果。
==总结:==
(1)请问:安装Kettle前必须要先安装jdk以及配置环境变量,这句话对吗?==A、对==;B、错;
(2)Kettle是使用java语言开发的一款开源的ETL工具,常用于大数据开发中的数据迁移与转换。
[了解]转换数据
==目标:==了解使用Kettle转换数据的操作步骤。
在大数据开发中,数据并不是单一形式的,我们常见的数据形式有很多。
比如:Excel、TXT、CSV等数据样式,以及MySQL数据库、Oracle、Hive等服务中的数据。
那么,为了能够让数据在同一个空间或平台上进行运算、处理、统计、分析、预测等工作,就需要频繁的对数据进行转换。
此时,Kettle就可以提供了这样一种快速、可靠的可视化的数据转换操作。
Kettle可以在多种数据源之间进行快速转换,比如把txt转换为Excel、把Excel转换为MySQL等。
Kettle转换数据的操作可以是多种多样的,但它的操作步骤几乎都是一致的。
Kettle基本开发步骤:
(1)新建转换/作业; (2)构建Kettle的数据流图; (3)配置数据流图中的各个组件; (4)保存并启动执行。
说明:
简单地说,就是输入、输出的操作。
==总结:==
(1)当使用Kettle来转换不同格式的数据文件时,优先要();==A、新建转换==;B、新建项目;
(2)注意:使用Kettle的基本步骤有:新建转换、构建流图、配置组件、保存并启动执行。
将txt转换为Excel文件
[掌握]新建转换与流图
==目标:==掌握转换与流图的新建处理。
需求描述:小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中。
想要进行数据转换,我们首先要做的事情就是新建一个转换文件,我们点击窗口上的文件 >> 新建 >> 转换。
然后,将需要的转换方式拖拽到右侧面板并运行即可完成转换,比如:输入文本文件、输出Excel文件。
当要使用Kettle来进行数据处理时,要来构建Kettle的数据流图,也就是用可视化操作把要做的事情【输入-输出】列出来。
(1)将左边的核心对象中的【输入
】文件夹下的【文本文件输入
】 拖拽到中间空白区域。
(2)从输出文件夹中将【Excel输出】组件拖拽到中间空白区域。
(3)按住Shift键,点击【文本文件输入】组件,移动鼠标到【Excel输出】,然后释放鼠标,这样就可以将两个组件连接到一起。
例如,一起来完成:
(1)新建一个转换处理,并用于将txt数据转换为Excel文件;
(2)构建Kettle的数据流图:文本文件输入、Excel输出;
(3)最后将流图组件连接在一起。
==总结:==
(1)当需要转换不同格式的数据前,要记得新建一个转换;
(2)请问:当要转换数据格式时,要提前确认好:输入文件格式和输出文件格式,这句话对吗?==A、正确==;B、错误。
[掌握]配置流图中的各个组件
==目标:==掌握将txt转换为Excel的流图组件配置。
当把数据流的转换方式与转换方向确定后,接下来要做的就是:配置每个组件,并对参数进行微调。比如:
(a)配置文件文本输入组件 (b)配置Excel输出组件
(a)配置文件文本输入组件
(1)双击【文本文件输入】组件,在弹出窗口中点击「浏览」按钮。
(2)选择「资料/测试数据」中的 user.txt 文件。
(3)点击「增加」按钮,将文件加入到要抽取的数据中来。注意:不点增加按钮,将不会抽取数据。
(4)点击「内容」选项卡,将分隔符修改为,逗号(注意是英文状态的逗号),将编码方式修改为:UTF-8。
(5)点击「字段」选项卡,再点击「获取字段」按钮,可以读取到txt文件中的所有字段。
(6)点击「预览记录」按钮,查看Kettle是否能够读取到 user.txt 中的数据。
当能成功显示时,预览内容为:
(7)点击「确定」按钮保存,此时【文本文件输入】组件配置完成。
(b)配置Excel输出组件
(1)双击【Excel输出】组件,在弹出窗口中点击「浏览」按钮。
(2)点击「内容」选项卡,设置要将Excel文件输出到具体的路径,然后点击确定,再删除文件后缀xls。
(3)点击「字段」选项卡,再点击「获取字段」,将Integer类型的格式设置为0,表示只输出不带小数点的数字。
例如,一起来完成:
(1)将本地数据user.txt配置到【文本文件输入】组件中,并设置相应参数;
(2)对【Excel文件输出】组件进行相关参数的配置;
(3)注意:若参数值有问题,可进行微调。
==总结:==
(1)当要把txt转换为Excel文件时,在输出端要配置为();A、文本文件输出;==B、Excel输出==;
(2)注意:把txt转换为Excel文件时,还得多关注下txt文本内容的格式,否则很容易转换失败。
[掌握]保存并启动执行
==目标:==掌握如何保存转换与启动执行操作。
当已成功建好转换和配置好流图后,则可以准备执行程序。操作如下:
(a)先保存转换方式 (b)再执行转换程序
(1)首先,点击工具条上方的保存按钮,或者按快捷键Ctrl + S。
(2)Kettle会提示让我们保存该数据流图(转换),此时选择保存到指定位置即可,然后点击「保存」按钮即可。
(3)点击工具栏上的执行按钮启动执行。当执行完成后,组件的右上角有一个绿色的对勾。
准备开始执行转换操作:
(4)执行完后,我们可以到指定的位置中,查看已经转换完成的Excel文件,并可以看到里面的内容。
例如,一起来完成:
(1)保存转换与流图组件到本地,并准备启动执行;
(2)观察执行的结果,并对有问题的数据参数进行微调。
==总结:==
(1)当要保存转换时,保存生成的是一个以()结尾的文件;A、.xls;==B、.ktr==;
(2)注意:当各个组件都已配置无误后,启动执行即可成功,否则会出错。
将Excel转换为MySQL
[了解]提出需求与准备工作
==目标:==了解在Kettle中如何配置MySQL?
需求描述:公司来了有个漂亮的程序员小姐姐叫小花,她刚大学毕业,项目经理安排她这样一项工作:有如下一个Excel文件user.xls,这个文件内容是这样的。
项目经理想要让她将这些数据导入到MySQL中。
小花刚来,急得团团转,不知所措,机会来了。
最终需求:需要从Excel中将这些用户数据,使用Kettle抽取到MySQL数据库中。
为了完成本案例,我们需要准备以下几个工作:
(a)找到待处理的Excel文件 (b)在MySQL数据库中创建数据库
说明:对于创建数据库,优先考虑使用命令行先创建成功。
(a)找到待处理的Excel文件
在资源文件夹中,可以找到user.xlsx文件
(b)在MySQL数据库中创建数据库
为了方便将数据抽取到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驱动文件需要完成:
(A)将资料中的MySQL jdbc驱动包【mysql-connector-java-8.0.13.jar
】导入到 【data-integration/lib
】中。
(B)找到data-integration\simple-jndi\jdbc.properties文件编辑,在末尾加上连接信息:
(C)添加完成后,重启Kettle即可。
在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
说明:MySQL用户名、密码以及数据库名称,可根据实际情况进行更改。
例如,一起来完成:
(1)新建一个数据库班级kettle_demo,并设定编码为utf8;
(2)将MySQL驱动文件拷贝至lib目录下;
(3)将JNDI的编辑信息添加到jdbc.properties文件末尾,并重启Kettle。
######################创建存放数据的数据库############################# # 1.创建库 create database if not exists bj96db_kettle_demo charset utf8; # 2.查看
==总结:==
(1)注意:在将Excel转换为MySQL数据前,要先做好配置MySQL的操作;
(2)当使用Kettle成功连接MySQL后,可以使用Kettle自动创建数据表。
==休息一下,15:45继续上课。==
[掌握]新建转换与流图
==目标:==掌握Excel转换MySQL的流图处理。
想要进行数据转换,我们首先要做的事情就是新建一个转换文件,点击窗口上的文件 >> 新建 >> 转换。
然后,将需要的转换方式拖拽到右侧面板中。
要使用Kettle来进行数据处理,首先要做的是构建Kettle的数据流图。
(1) 从左边的核心对象中,分别拖入「输入/Excel输入」、「输出/表输出」两个组件到中间区域。
(2)然后,按住Shift键,在「Excel输入」组件上点击鼠标左键,拖动到「表输出」组件上,连接两个组件。
例如,一起来完成:
(1)新建一个转换处理,并用于将Excel数据转换为MySQL数据;
(2)构建Kettle的数据流图:Excel输入、表输出;
(3)最后将流图组件连接在一起。
==总结:==
(1)当要把数据转换为MySQL时,输出时选择组件为();==A、表输出==;B、SQL输出;
(2)注意:在数据转换前,一定要提前确认好数据输入、输出的具体格式。
[掌握]配置流图中的各个组件
==目标:==掌握将Excel转换为MySQL的流图组件配置。
此时,就需要来配置数据流图中的各个组件:
(a)配置Excel输入组件 (b)对表输出组件进行配置
说明:在这里,要配置将数据加载到哪个MySQL中。
(a)配置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)点击「确定」按钮,并进行保存刚刚的操作。
(b)对表输出组件进行配置MySQL信息
要使用Kettle操作MySQL,必须要建立Kettle与MySQL的连接,否则Kettle也不知道操作哪个MySQL库。
(1)双击「表输入」组件,会自动弹出配置窗口,点击「新建」按钮。
(2)此时,就需要来配置MySQL连接
(A)输入连接名称,此处可自定义名称; (B)在连接类型列表中,选择MySQL; (C)输入连接方式:JNDI (D)JNDI名称填写:MYSQL_DB
(3)点击【测试】按钮,测试Kettle是否能够正确连接到MySQL。
(4)点击确认保存,到这里数据库连接就应该创建好了。
当然了,我们也可以使用Kettle在MySQL中自动创建数据表。
此时,继续使用Kettke自动在MySQL中创建表。
(1)输入目标表的名称为:t_user,后续Kettle将在MySQL中创建一张名为 t_user 的数据表。
(2)点击下方的「SQL」按钮,可以看到Kettle会自动帮助我们生成MySQL创建表的SQL语句,我们将age和gender字段的数据类型改为INT类型。
(3)点击【执行】按钮。Kettle会自动执行该SQL脚本。执行完后,便可以在DataGrip中查看到t_user表。
(4)点击「确定」按钮,保存配置。
例如,一起来完成:
(1)将本地Excel表数据user.xlsx配置到【Excel文件输入】组件中,并设置相应参数;
(2)对【表输出】组件进行相关参数的配置;
(3)注意:若参数值有问题,可进行微调。
==总结:==
(1)注意:在把Excel数据转换为MySQL时的Excel输入的Integer字段数据要设定为()格式;A、*;==B、#==;
(2)通常情况下,配置流图的顺序都是先配置输入端、再配置输出端,并在执行过程中再对参数进行调整。
[掌握]保存并启动执行
==目标:==掌握如何保存转换与启动执行操作。
当已成功建好转换表数据和配置好流图后,则可以准备执行程序。
(1)点击保存按钮进行保存转换操作。
(2)点击工具栏上的执行按钮启动执行操作。
准备开始执行转换操作:
(3)执行成功后,可以看到以下界面,说明Kettle的转换已经执行成功!
(4)如果要确认执行结果是否成功,则需要到DataGrip中查看,双击t_user表,可以看到Excel中的数据都已经抽取到了MySQL。
例如,一起来完成:
(1)保存转换与流图组件到本地,并准备启动执行;
(2)观察执行的结果,并查看是否已成功添加数据。
==总结:==
(1)当配置流图准确无误后,启动执行即可成功完成数据格式的转换处理;
(2)思考:若要多次把数据转换到MySQL中,是否需要多次设置MySQL连接呢?
MySQL表与表数据转换
[了解]共享数据连接
==目标:==了解如何设置数据连接共享?
为了多次转换数据格式时,连接数据库更方便,可以在Kettle中,将一个数据库进行共享,这样其他的Kettle转换就都可以复用该数据库连接了。
共享数据库连接的具体操作步骤如下:
(1)在转换中,点击「主对象树」,点击【DB连接】可以查看到数据库连接名(如果连接已经存在,则无需创建)
(2)右键单击需要的数据库连接,选择「共享」
(3)发现刚刚选择的数据库连接已经变成黑体字,说明已经共享成功。
此时就可以发现在新建的转换中,能看到有该数据库连接了。这样就避免了每次我们都需要配置该数据库连接。
例如,一起来完成:
(1)将数据库连接进行设置共享;
(2)观察成功设定共享数据的效果。
==总结:==
(1)在实际应用中,想要简化数据连接的操作,则可以进行连接共享;
(2)请问:当成功共享了数据连接后,再转换为MySQL数据时,则可以直接使用该连接,这句话对吗?==A、对==;B、错。
[掌握]新建转换与流图
==目标:==掌握MySQL转换MySQL的流图处理。
需求描述:前面我们已经将Excel中数据抽取到了MySQL的t_user表中,现在有了新需求,要将MySQL数据库中的 t_user 表中的数据抽取出来,加载到另外一张表 t_user1中。
当想要进行数据转换时,我们首先要做的事情就是新建一个转换文件,我们点击窗口上的文件 >> 新建 >> 转换。
然后将需要的,转换方式拖拽到右侧面板并运行即可完成转换。
要使用Kettle来进行数据处理,先要构建Kettle的数据流图。
(1)从核心对象的输入组件中,将「表输入」组件拖拽到中间的空白处。
(2)从输出中将「 表输出」组件拖拽到中间空白处。
(3)按住Shift键,并按住鼠标左键点击【表输入】组件,并拉动鼠标,移动到【表输出】组件,松开鼠标即可位置流图连接。
例如,一起来完成:
(1)新建一个转换处理,并用于将MySQL数据转换为MySQL数据;
(2)构建Kettle的数据流图:表输入、表输出;
(3)最后将流图组件连接在一起。
==总结:==
(1)当把MySQL表与表之间转换数据时,可选择流图组件:()、表输出;A、SQL输入;==B、表输入==。
[掌握]配置流图中的各个组件
==目标:==掌握将MySQL转换为MySQL的流图组件配置。
此时,就需要来配置数据流图中的各个组件:
(a)配置表输入组件 (b)对表输出组件进行配置
说明:在这里,要配置将MySQL的数据表加载到哪个数据表中。
(a)配置表输入组件,步骤:
(1)双击表输入组件,在弹出对话框中选择「获取SQL查询语句」。
(2)选择 t_user 表,点击确定。
(3)在弹出对话框中选择「否」。
(4)点击「预览」按钮,查看是否能够从MySQL读取数据
(5)可以看到,Kettle中可以查看到 t_user 表中的数据。
(b)对表输出组件进行配置,步骤:
(1)双击表输出组件,在目标表输入t_user1。
(2)点击[SQL]按钮,让Kettle中自动创建表结构。
(3)可以看到,Kettle自动为我们生成了创建表的SQL语句,如有需要可以简要更改字段类型。
(4)点击执行后,可以查看到已成功创建数据表。
(5)我们可以到DataGrip中看到t_user1已经成功创建,但表中没有任何数据。
(6)点击「确定」按钮,并进行保存表输出信息。
例如,一起来完成:
(1)将MySQL的用户表配置到【表输入】组件中,并设置相应参数;
(2)对【表输出】组件进行相关参数的配置,并设定新存入数据的数据表;
(3)注意:若参数值有问题,可进行微调。
==总结:==
(1)注意:当在转换表数据时,表字段的类型要保持一致;
(2)在配置组件时,发现字段类型有问题时,可以对类型进行必要的修改。
[掌握]保存并启动执行
==目标:==掌握如何保存转换与启动执行操作。
当已成功建好表输入输出数据和配置好流图后,则可以准备执行程序。
(1)点击保存按钮,可以保存该转换。
(2)点击【执行】按钮执行,如果看到每个组件上都打上了绿色的对号,说明转换已经执行成功。
(3)再打开DataGrip,刷新下表格,可以看到数据已经加载到t_user1中。
例如,一起来完成:
(1)保存转换表输入输出与流图组件到本地,并准备启动执行;
(2)观察执行的结果,并查看数据表是否已成功添加数据。
==总结:==
(1)MySQL表间转换使用到的组件为:()、表输出;A、Excel输入;==B、表输入==;
(2)数据转换的步骤是:新建转换、构建kettle的数据流图、配置数据流图中的各个组件、保存并启动执行。
常见的其他转换操作
[了解]插入/更新组件
==目标:==了解插入/更新组件的使用方法。
对于插入/更新组件,指的是:能够将Kettle抽取的数据,与某个表的数据进行对比,如果数据存在就更新,不存在就插入。
当要插入/更新数据时,需要注意几个点:
(1)先清空t_user1表中的数据
(2)新建转换,并建立数据流图
接着,需要来配置Kettle数据流图中的【表输入】组件,操作步骤:
(1)双击表输入组件,点击获取SQL查询语句,选择t_user1表。
(2)点击预览按钮,查看Kettle是否能够从MySQL中读取数据。
继续来配置插入/更新组件,操作步骤:
(1)双击插入/更新组件,点击浏览按钮,找到t_user1表。
(2)添加用来查询的关键字,设置表字段为:id,比较符为:=,流里的字段为:id。
(3)点击「获取和更新字段」,这样Kettle将会自动更新、或插入所有的字段。
最后,一起保存并启动执行Kettle转换,操作步骤:
(1)保存并启动该Kettle转换。
(2)在DataGrip中先修改t_user中张三的年龄改为22,然后执行转换后,刷新t_user1表,发现张三的年龄已经更新为22。
例如,一起来完成:
(1)先试着到【表输入】与【表输出】组件中进行多次执行转换,观察效果;
(2)接着,先清空新建的存数据的用户表信息;
(3)新建【表输入】与【插入/更新】组件后完成配置,再执行转换并观察结果;
(4)给【表输入】的数据表中添加一条数据,再执行转换,观察数据效果。
insert into【xxx表】 values('114456198712198986','张敏敏',21,0,'广东省','深圳市','南山区','17503046666','1999-02-14','Cosplay;短视频','2019-9-10 19:11');
########################插入或更新##################################### # 使用库 use bj96db_kettle_demo; # 清空数据 truncate table bj96_tb_user222; # 插入数据 insert intobj96_tb_user values('114456198712198986','张敏敏',21,0,'广东省','深圳市','南山区','17503046666','1999-02-14','Cosplay;短视频','2019-9-10 19:11');
==总结:==
(1)【插入/更新】组件能够将Kettle抽取的数据,与某个表的数据进行对比,如果数据存在就更新,不存在就插入;
(2)插入/更新组件可以设置比较字段,比较方式等,通常比较方式设定为()。A、is;==
B、=
==。
[了解]switch/case组件
==目标:==了解如何使用switch/case组件。
有一天,体育老师要让班上的男女同学分别排成两队,分别是:男同学一队,女同学一队。
体育老师要做一件非常重要的事情:判断学生是男孩,还是女孩,然后让他们各自到指定的队伍中。在Kettle中,也可以做到这个效果!
在Kettle中,可以使用switch/case组件来做类似于体育老师要做的事情——判断。
注意:switch/case组件存在于【流程】中。
需求描述:要从t_user表中读取所有用户数据,并将性别为男的用户导出到一个Excel、性别为女的导出到另外一个Excel。
先来构建Kettle数据流图,操作步骤如下:
(1)将【表输入】组件拖拽到中间的空白区域。
(2)从流程文件夹中,将 Switch/case 组件拖拽到中间的空白区域。
(3)再分别拖入两个Excel输出组件并对组件重命名。
(4)按住shift键,将组件按照下图方式连接起来。
接着,一起来配置表输入组件。
(1)双击表输入组件,指定从t_user表中抽取数据并预览。
另外的,要来配置switch/case组件。
(1)此处要指定,按照性别来判断并输出到Excel文件。需要设置Switch字段为gender,在Case值列表中将值分别改为男、女。
如果gender是男的话,则将数据加载到 Excel输出 - 男,如果gender是女的话,将数据加载到 Excel输出 - 女。
然后,就需要来配置Excel输出组件,操作步骤:
(1)双击Excel输出-男组件,指定输出到指定的文件夹及文件名。
(2)点击字段并获取字段,将age字段的格式设置为0。
(3)双击Excel输出-女组件,指定输出到指定的文件中。
(4)点击字段并获取字段,将age字段的格式设置为0。
最后,再来启动执行,操作步骤:
(1)保存并启动该Kettle转换。
(2)执行完毕后,Kettle会自动生成两个Excel文件,一个文件保存了性别为男的所有用户,另一个文件保存了性别为女的所有用户。
例如,一起来完成:
(1)新建转换与数据流图:表输入、switch/case、Excel输出;
(2)对数据流图进行配置处理,设置1为男、0为女;
(3)保存转换并启动,观察执行效果。
==总结:==
(1)我们会发现,switch/case组件提供了()的实现;A、条件判断;B、循环;
(2)一般地,可以简单的把switch/case组件当作是where条件筛选处理。
[了解]SQL脚本执行
==目标:==了解如何执行SQL脚本?
在Kettle中,也可以使用Kettle中专门的SQL脚本组件来执行SQL脚本信息。
需求描述:使用Kettle执行SQL脚本,并将t_user1表中的数据清空。
接着,一起来看看使用Kettle执行SQL脚本的操作步骤:
(1)首先,将脚本文件夹下的【执行SQL脚本】拖拽到右侧的空白中。
(2)继续配置Kettle数据流图组件参数,我们双击【执行SQL脚本】组件,选择要连接的数据库,以及要执行的SQL命令。
我们要将t_user1表中的数据清空,所以脚本中要执行的语句如下:
TRUNCATE TABLE t_user1;
(3)保存并启动该Kettle转换并执行。
(4)当执行完毕后,我们发现t_user1中的数据已经被完全清除掉了,说明Kettle已经帮助我们执行了SQL脚本。
例如,一起来完成:
(1)创建转换与数据流图:执行SQL脚本组件;
(2)清空新存放数据的用户表信息,执行脚本,并观察效果。
truncate table bj96_tb_user222;
==总结:==
(1)在应用中,可以使用Kettle执行一段简要的SQL脚本,而复杂的脚本尽可能使用SQL语句;
(2)在操作中,会发现Kettle工具自动化程度较高。
[了解]job作业开发
==目标:==了解Kettle作业的开发流程。
需求描述:使用Kettle每5秒钟执行一次转换处理,并将Excel中的数据抽取并加载到MySQL中。
要实现这个需求,我们需要学习Kettle的job作业。
Kettle中的作业(job)定义了转换应该如何执行,同时可以配置转换来进行定时任务。
首先,需要来创建作业并构建数据流图,操作步骤如下:
(1)点击文件,选择新建/作业按钮,就可以创建作业了。
(2)将核心对象中,通用文件夹下的Start组件拖拽到中间的空白区域。
(3)将通用文件夹的「转换」组件拖拽到中间的空白区域。
(4)将通用文件夹中的「成功」组件拖拽到中间的空白区域。
(5)同样使用Shift键,将几个组件都连接起来。
接着,需要来一起配置作业流图组件,操作步骤如下:
(1)到配置转换这里,选择作业中要执行的【转换】,此处选择之前开发好的excel_to_mysql.ktr即可。
(2)要注意的是:此处要先保存作业,然后再配置转换。
(3)然后,需要配置Start启动组件。
(4)最后,再启动并执行job作业,执行程序后,观察数据库中的数据是否会5秒钟增加一次。
例如,一起来完成:
(1)创建转换与数据流图:新建job作业、Start、转换、成功,并配置组件信息;
(2)实现每隔5秒把Excel中的数据自动转换到MySQL中,并观察数据的变化效果。
==总结:==
(1)Kettle中的作业(job)定义了转换应该如何执行,并能配置转换进行定时任务;
(2)请问:在配置作业前,要先保存作业,然后再配置转换,这句话正确吗?==A、正确==;B、错误。