当前位置: 首页 > news >正文

可视化ETL平台-Kettle的安装及简单使用

本章知识简介

主线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、错误。

相关文章:

可视化ETL平台-Kettle的安装及简单使用

本章知识简介 主线A: 自连接查询; 主线B: 安装JDK与Kettle; 主线C: 使用Kettle工具. 本章目标: 1: 知道使用一张表可以实现自连接查询; [了解]注意: 左表、右表都是同一张表 2: 了解Kettle环境的安装流程; [了解]a.安装JDKb.安装Kettle 3: 熟悉使用kettle将txt数…...

java8 动态加载jar包至系统的classpath

1. io.test包 创建MyMain.java类,创建addJarToClasspath方法将jar包动态加载进系统的classpath中 package io.test;import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.lang.reflect.Method;public class MyMain {public st…...

C++二级题 计算好数:1数大于0数(二进制的位运算)

1、题目 若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为好数。 例如: (13)10 (1101)2,其中1的个数为3,0的个数为1,则此数是好数; (10)10 (1…...

数字孪生城市:智慧城市的未来蓝图

在当今数字化时代,智能技术的广泛应用正在改变人们的生活和工作方式。数字孪生城市作为未来新型智慧城市演进的重要方向,数字孪生城市是一种将城市物理世界的各个方面转化为数字形式的技术,通过网络空间与物理世界之间的实时数据交换和仿真分…...

Java篇图书管理系统

目录 前言 一. 图书管理系统的核心 二. 图书管理系统基本框架 2.1 book包 2.1.1 Book(书籍类) 2.1.2 Booklist (书架类) 2.2 user包 2.2.1 User类 2.2.2 Administrator(管理员类) 2.2.3 Visitor(用户类) 2.…...

BUUCTF之web篇

第一题 [极客大挑战 2019]EasySQL 打开靶机后可以看到这是一个登陆的页面 我们可以尝试两种方式登录 弱口令爆破(burpsuite) 通过SQL注入里的万能密码来跳过账户和密码验证的过程 这里就需要万能密码aor true # 在这里单引号的作用是结束用户名或者密码…...

010——二叉树(2)线索化

引入: 问题1: n个节点的二叉树,用二叉链表存储,问在这个二叉链表中一共有 __个指针域? 其中,有 __个指针域不为NULL,__个指针域为NULL? 答:2n n-1 n1 在二叉链表中&#xf…...

鸿蒙拍照小助手02

项目文件目录 为了确保项目文件目录清晰,以下是完整的项目文件目录结构: code 拍照小助手/ │ ├── entry/ │ ├── src/ │ │ ├── main/ │ │ │ ├── js/ │ │ │ │ └── 默认/ │ │ │ │ ├── 页面/ │ │ │ │ │ ├── 主页/ │ │ │ │ │ │ ├…...

lua while循环

软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua作为一种小巧精致的语言,特别适用于嵌入其他程序提供脚本支持。在编程中,循环结构是不可或缺的一部分,而while循环则是…...

JAVA篇之类和对象

目录 一. 面向对象 1.1 面向对象和面向过程 二. 类的定义和使用 2.1 什么是类 2.2 类的定义格式 三. 类的实例化 四. this引用 4.1 this引用的作用 五. 构造方法 5.1 构造方法重载 5.2 通过this调用其他构造方法 5.3 默认初始化 结语 一. 面向对象 Java 是一门面向对…...

IO流详解_CoderLix

主要内容 File类IO流字节流字符流异常处理Properties缓冲流转换流序列化流打印流 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) :通过…...

241023-RHEL非管理员安装Docker并开放指定宿主机端口部署Gitlab

A. RHEL非管理员安装Docker 要在没有管理员权限的情况下离线安装 Docker 和 Docker Compose,虽然受到一定限制,仍有一些可行的步骤可以帮助你在有限权限下完成这项任务。需要注意的是,这种方式适用于本地用户环境下的 Docker 安装&#xff0…...

python ubuntu安装加速

ubuntu升级python到python3.11(可能是全网最靠谱的方法,亲测有效)_ubuntu python3.11-CSDN博客 python-release安装包下载_开源镜像站-阿里云...

100种算法【Python版】第12篇——快速幂算法

本文目录 1 基本原理2 基本步骤3 数学示例4 python代码1 基本原理 快速幂算法(Fast Exponentiation)是一种高效计算整数幂的方法,尤其适用于计算大数的幂。其主要思想是利用分治法和二进制表示来减少乘法运算的次数,从而加快计算速度。 计算 x n x^n x...

Java多线程详解②(全程干货!!!)Thread Runnable

这里是Themberfue 上节主要讲完了多线程的一些基础知识,这节通过代码进一步理解多线程🫡 多线程 Java标准库中提供了Thread类,以程序员们编写多线程代码,我们可以查看官方文档进一步了解Thread的特性以及提供的接口。 类似于Sy…...

机器学习——图神经网络

图神经网络(GNN):理解复杂网络数据的有效工具 图神经网络(Graph Neural Network, GNN)是近年来机器学习领域的热门话题。GNN 以图结构数据为核心,能够高效地捕捉节点和边的复杂关系,广泛应用于社交网络、推荐系统、生…...

一、在cubemx下RTC配置调试实例测试

一、rtc的时钟有lse提供。 二、选择rtc唤醒与闹钟功能 内部参数介绍 闹钟配置 在配置时间时,注意将时间信息存储起来,防止复位后时间重新配置。 if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0)! 0x55AA)//判断标志位是否配置过,没有则进…...

【Nas】X-DOC:Mac mini Docker部署中国特供版Jellyfin

【Nas】X-DOC:Mac mini Docker部署中国特供版Jellyfin 1、拉取镜像:2、启动镜像3、访问服务4、参考文档 Mac mini Docker部署中国特供版Jellyfin 1、拉取镜像: docker pull nyanmisaka/jellyfin:230901-amd64jellyfin 10.8.10版本&#xff…...

合合信息:生成式Al时代的内容安全与系统构建加速,开启智能文档的全新潜能

文章目录 写在前面图像内容安全图像篡改应用场景伪造文档/证照检测伪造人脸检测 GAI时代系统构建加速通用文档解析 合合信息 写在前面 随着人工智能技术的飞速发展,生成式AI已经悄然步入了我们的日常生活,以其强大的内容生成能力,重塑了信息…...

京东双十一高并发场景下的分布式锁性能优化

背景 在电商领域,尤其是像京东双十一这样的大促活动,系统需要处理极高的并发请求。这些请求往往涉及库存的查询和更新,如果处理不当,很容易出现库存超卖、数据不一致等问题。分布式锁作为一种有效的解决方案,能够在多…...

华为ICT题库-AI 人工智能部分

1178、以下哪个选项是华为的云端AI芯片?(云服务考点) (A)Inferentia (B)MLU100 (C)Cloud TPU (D)Ascend 910 答案:D 解析:华为的云端AI芯片被称为Ascend芯片系列,其中Ascend 910是其旗舰产品。Ascend 910…...

React Native 修改安卓应用图片和名称

在React Native(RN)项目中,修改安卓应用图标和名称通常涉及对Android原生代码的一些修改。以下是详细步骤: 修改应用图标 准备图标资源: 创建或获取你想要的图标,并确保它们符合Android的图标规范&#xf…...

普推知产:商标初审已下,商标申请通过如何高些!

近期下来一批商标注册的初步审公告通知书,一些客户对商标下证要求比较高的,普推知产商标老杨发现,要像下证高核心还是在于名称,名称起好备用的多,让商标专业人士经检索后层层过滤后提报,通过会好很多。 普推…...

HICP--2

在area 0的路由器只生成 area 0 的数据库,只在area 1 的一样。但是既在又在的生成两个 area的 LSDB 一、区域间三类LSA 在OSPF(Open Shortest Path First)协议中,区域间三类LSA(Link-State Advertisement&#xff09…...

sheng的学习笔记-AI基础-正确率/召回率/F1指标/ROC曲线

AI目录:sheng的学习笔记-AI目录-CSDN博客 分类准确度问题 假设有一个癌症预测系统,输入体检信息,可以判断是否有癌症。如果癌症产生的概率只有0.1%,那么系统预测所有人都是健康,即可达到99.9%的准确率。 但显然这样的…...

Linux -- 共享内存(2)

目录 命令 ipcs -m : 命令 ipcrm -m shmid: 共享内存的通信: 为什么共享内存更高效? 代码: ShmClient.cc: ShmServer.cc: 结果: 如何让共享内存实现同步? 代码&a…...

云函数实现发送邮件,以qq邮箱为例

云函数实现发送邮件,前端传参调用发送邮件即可。以qq邮箱为例。 1、开启qq邮箱的smtp服务并且生成授权码,操作界面如下图: 2、在腾讯云新建一个云函数代码如下: const nodemailer require("nodemailer");// 云函数入口函数 export…...

Kafka如何控制消费的位置?

大家好,我是锋哥。今天分享关于【Kafka如何控制消费的位置?】面试题?希望对大家有帮助; Kafka如何控制消费的位置? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Kafka 中,控制消费位置主要通过以下几个机制来实…...

python爬虫——Selenium的基本使用

目录 一、Selenium的介绍 二、环境准备 1.安装Selenium 2.安装WebDriver 三、元素定位 1.常用定位元素的方法 2. 通过指定方式定位元素 四、窗口操作 1.最大化浏览器窗口 2.设置浏览器窗口大小 3.切换窗口或标签页 切换回主窗口 4. 关闭窗口 关闭当前窗口 关闭所…...

【Linux】【xmake】安装 + C/C++常用项目配置

文章目录 0. 环境准备1. 子命令create - 快速创建项目build - 构建程序config - 配置编译需要的参数show - 查看当前工程基本信息update - 程序自更新 2. C/C 项目常用配置2.1 项目目标类型2.2 添加宏定义2.3 头文件路径和链接库配置2.4 设置语言标准2.5 设置编译优化2.6 添加源…...

如何网页制作/郑州网站seo

px与pt区别 字体大小的设置单位,常用的有2种:px、pt。这两个有什么区别呢? 先搞清基本概念: px就是表示pixel,像素,是屏幕上显示数据的最基本的点;pt就是point,是印刷行业常用单位&a…...

昆山网站/广告推广计划

据权威机构统计,在所有的软件开发类人才中对Java开发人才的需求量最大,达到了60%-70%,Java因其所提供的强大功能平台而受到越来越多企业的青睐。 那么,Java开发就业前景如何?让千锋带你好好了解! 1、程序员擅长语言 图表显示&…...

做logo设计的网站/哪家网络营销好

有时候,我们导入一个项目的时候会发现tomcat或者jboss不能识别它,因为它不是动态web项目,所以就不能部署到服务器上,这时候就要修改java项目,让它变成web项目。 有两种方法,第一种是新建一个web项目&#…...

h5网站显示的图标怎么做的/市场推广策略

水平有限 有误请指出版本:Percona MySQL 5.7.22对于锁的学习我做了一些输出详细参考如下:https://github.com/gaopengcarl/percona-server-locks-detail-5.7.22.git其中有readme 本文也是一个朋友问我死锁问题。越前 一、问题提出 如下构造方式&#xff…...

手机创建个人网站 免费/怎么样把广告做在百度上

解决办法:最近网上流行一种后门病毒:Iexplores.exe.这个后可使后门种植者通过该后门秘密控制受感染机器,这个病毒工作于Windows 32平台。 病毒会在硬盘的根目录生成Iexplores.exe文件,这个文件的作用是:当你双击硬盘的盘符时,系统…...

义乌网站建设方式/b站黄页推广软件

RelativeLayout布局 android:layout_marginTop"25dip" //顶部距离 android:gravity"left" //空间布局位置 android:layout_marginLeft"15dip //距离左边距 // 相对于给定ID控件 android:layout_above 将该控件的底部置于给定ID的控件之上; android:la…...