即时焦点:快速上手kettle(二)小试牛刀

2023-05-29 08:30:18 来源:博客园
目录一 、前言二 、两个小目标三、 kettle核心概念介绍3.1 转换3.1.1 步骤(Step)3.1.2 跳(Hop)3.1.3 元素据3.1.4 数据类型3.1.5 并发执行3.2 作业四、实践操作4.1 案例1 将csv文件转换成excel文件4.1.1 在kettle中新建一个转换4.1.2选择输入控件并设置4.1.3 选择输出控件并设置4.1.4 按住shift通过将输入输出两步骤连接起来4.1.5 点击启动按钮执行转换4.1.6查看日志,并检查是否成功4.2 案列2 将excel文件导入MySQL数据库4.2.1和上面步骤一样我们需要新建一个转换4.2.2 新建数据库连接4.2.3 拖入Excel输入控件并设置4.2.4 拖入表输出控件并设置4.2.5 点击启动按钮进行转换4.2.6 查看日志并检查MySQL数据表中是否有数据一 、前言

上一期中大概介绍了下kettle,并已经把kettle下载安装完了。

这一期我们就来简单体验下kettle怎么进行数据转换的。

二 、两个小目标

我们这里呢就以两个小案例来体验下kettle


(资料图)

将csv文件通过kettle转换成excel文件将excel文件通过kettle写入到数据库表中三、 kettle核心概念介绍

kettle 被称为可视化编程语言,可以完成复杂的etl工作流。kettle里的代码就是转换和作业。

所以呢,我们首先就来说说转换和作业。

3.1 转换

从下面截图中,我们看到转换包含了很多核心对象,说明其包含了很多功能。后面有得我们学的了(开个玩笑)

--转换包含元素--转换核心对象

转换(transaformation)负责数据的输入、转换、校验和输出等,kettle中转换完成了ETL的全部工作

转换由多个步骤(Step) 组成。包含各种文件格式的数据输入/输出 (如csv文件输入、sql文件输出、sql脚本执行、各种查询等等)

如果各个步骤之间需要数据库操作,我们就需要建立DB连接

各个步骤之间使用跳(Hops)来连接。我们可以将跳理解为一条道路,数据有一个步骤(驿站)通过(道路)流向下一步骤(驿站)

kettle中最小的数据单元是

3.1.1 步骤(Step)

步骤是转换里的基本组成部分,上面截图中包含了两个步骤①CSV文件输入Excel输出

每个步骤都会涉及到数据行

步骤将数据写到与之相连的一个或多个输出跳(hop),再传送到跳的另一端的步骤

大多数的步骤都可以有多个输出跳。一个步骤的数据发送可以被设置为分发复制

3.1.2 跳(Hop)

是两个步骤(驿站)之间的道路(带箭头的连线)

是两个步骤之间的数据行缓存

当行集了,向行集写数据的步骤将停止写入,直到行集里又有了空间

当行集了,从行集读取数据的步骤停止读取,直到行集里又有可读的数据行

可以通过如下方式查看和修改行缓存大小

①右键转换-->设置② 选择"杂项"tab页
3.1.3 元素据

每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据

通常包含下面一些信息。

名称:数据行里的字段名是唯一的。

数据类型:字段的数据类型。

格式:数据显示的方式,如Integer的#、0.00。

长度:字符串的长度或者BigNumber类型的长度。

精度:BigNumber数据类型的十进制精度。

货币符号:¥

小数点符号:十进制数据的小数点格式。不同文化背景下小数点符号是不同的,一般是点(.)或逗号(,)。

分组符号:数值类型数据的分组符号,不同文化背景下数字里的分组符号也是不同的,一般是点(.)或逗号(,)或单引号(’)

这里的输入文件十csv格式数据,所以分组符号是逗号","

3.1.4 数据类型

数据以数据行(可以理解为一个表格中的一行) 的形式沿着步骤移动,每个数据行又有多个字段元素(可以理解为一个单元格)构成

就像在excel中,每个单元格都可以设置数据格式一样,这里数据行中的字段也有自己的数据类型.

常见的数据类型有以下几种

--数据类型--说明
String字符类型数据
Number双精度浮点数
Integer带符号长整型(64位)
BigNumber任意精度数据
Date带毫秒精度的日期时间值
Boolean取值为true和false的布尔值类型
Binary二进制字段可以包含图像、声音、视频及其他类型的二进制数据
3.1.5 并发执行

我们经常需要处理大量的数据,所以设计了这样的行集缓存规则,使得每个步骤就是一个独立线程.所有步骤都以并发方式执行.

当转换启动后,所有步骤都同时启动,从它们的输入跳中读取数据,并把处理过的数据写到输出跳.

直到输入跳里不再有数据,就中止步骤的运行。

当所有的步骤都中止了,整个转换就中止了

如果想要一个任务沿着指定的顺序执行,那么就要使用下面所讲的“作业”来做流程控制

3.2 作业

负责定义一个完成整个工作流的控制,如将转换的结果发送邮件给相关人员.

因为转换(transformation)以并行方式执行,所以必须存在一个串行的调度工具来执行转换,这就是 Kettle中的作业

四、实践操作4.1 案例1 将csv文件转换成excel文件4.1.1 在kettle中新建一个转换4.1.2选择输入控件并设置

核心对象-->输入-->CSV文件输入 (将控件拖入工作区)

① 选择CSV文件输入控件②将控件拖入工作区
③ 选择源文件④ 检查csv数据是否正常读出
4.1.3 选择输出控件并设置
① 选择Excel输出控件②将控件拖入工作区
③ 设置输出文件名
4.1.4 按住shift通过将输入输出两步骤连接起来4.1.5 点击启动按钮执行转换4.1.6查看日志,并检查是否成功
①日志没报错②文件也写入成功了
4.2 案列2 将excel文件导入MySQL数据库4.2.1和上面步骤一样我们需要新建一个转换4.2.2 新建数据库连接

由于案例2需要涉及到MySQL数据库,所以我们需要建立DB连接

①下载MySQL驱动(需要下载对应版本的) 我用的是MySQL5.7 ,所以这里下载5.1.37 版本驱动

官方地址:https://downloads.mysql.com/archives/c-j/

② 将下载的好的MySQL驱动包放入lib文件夹下

③新建DB连接

注:如果没有下载驱动包或者驱动包版本与MySQL版本不一致,会包如下错误

4.2.3 拖入Excel输入控件并设置

① 将Excel输入控件拖入工作区

②设置Excel输入控件

直到点击预览记录后获取到如下截图所示数据,说明输入设置成功了

4.2.4 拖入表输出控件并设置

① 将表输出控件拖入工作区

② 通过将输入输出控件连接起来

③设置需要导入数据的目标表

④ 匹配数据库字段

4.2.5 点击启动按钮进行转换4.2.6 查看日志并检查MySQL数据表中是否有数据

①日志显示转换成功

② 我们再来看看数据库test的t_tv 表中也有数据了

到此通过两个案例小试牛刀之后都转换成功了,是不是有点小成就感呢。

其实这只是kettle工具的冰山一角,从kettle那么多核心对象可以看得出来,它还有很多很多很多得玩法等着我们去开启。

本期内容到此就结束了,希望内容对你有所帮助,我们下期再见 (●"◡"●)

上一篇:快速上手kettle(一)壶之简介下一篇:快速上手kettle(三):kettle常用输入控件使用(小编正在玩命更新中)

上一篇:

我市召开中心城区交通秩序综合整治工作讲评会

下一篇:

我市召开中心城区交通秩序综合整治工作讲评会

推荐阅读