1

快速上手kettle(二)小试牛刀 - xiezhr

 11 months ago
source link: https://www.cnblogs.com/xiezhr/p/17439369.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

上一期中大概介绍了下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),再传送到跳的另一端的步骤

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

    image-20230527212552068
3.1.2 跳(Hop)

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

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

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

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

image-20230527212925992

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

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

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

通常包含下面一些信息。

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

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

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

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

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

货币符号:¥

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

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

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

image-20230527221440326
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输出控件 ②将控件拖入工作区
image-20230527230537467 拖入工作区
③ 设置输出文件名
image-20230527231014203
4.1.4 按住shift 通过将输入输出两步骤连接起来
image-20230527231441251
4.1.5 点击启动按钮执行转换
image-20230527231624181
4.1.6查看日志,并检查是否成功
①日志没报错 ②文件也写入成功了
image-20230527231913544 image-20230527232017215

4.2 案列2 将excel文件导入MySQL数据库

4.2.1和上面步骤一样我们需要新建一个转换
案例2转换
4.2.2 新建数据库连接

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

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

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

MySQL驱动下载

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

驱动包路径

③新建DB连接

image-20230527235403720

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

驱动包不对报错
4.2.3 拖入Excel输入控件并设置

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

Excel输入控件拖入工作区

②设置Excel输入控件

设置源文件
添加文件
获取工作表
获取数据字段

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

预览到数据
4.2.4 拖入表输出控件并设置

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

表输出控件拖入工作区

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

跳连接

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

选择目标表

④ 匹配数据库字段

匹配数据库字段
4.2.5 点击启动按钮进行转换
image-20230528095444390
4.2.6 查看日志并检查MySQL数据表中是否有数据

①日志显示转换成功

日志显示成功

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

image-20230528095831318

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK