ETL-kettle数据转换及组件使用详解

目录

一、txt文本转换成excel

1、新建、转换

2、构建流程图

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

3.1、配置文件文本输入组件

 3.2、 配置Excel输出组件

4、保存执行

二、excel转换成mysql

(1)在MySQL数据库中创建数据库,这个根据自身情况。我就在现有test库中测试了。

(2)根据以上步骤,新建转换。

(3)构建流程图,选择excel输入和表输出

(4)将两个组件连接起来

(5)双击表输入,文件选择源文件的位置,然后点击增加,在点击【工作表】,获取工作表名称,把标签移到右边

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

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

(8)点击「预览记录」按钮查看抽取到的数据。如果数据格式有我呢提,在调整格式

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

(10)配置MySQL组件,双击表输出组件

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

(12)点击下方的「SQL」按钮,可以看到Kettle会自动帮助我们生成MySQL创建表的SQL语句,

(13)保存并执行转换

(14)查看数据,由于ID 数据过大,需要把属性换成 bigint

三、 MySQL表之间转换

1、共享数据库连接

2、需求:将user表中的数据,转换到user1表中

3、新建转换

4、构建kettle流程图

5、配置Kettle数据流图中的组件

 四、插入和更新组件

1、需求

2、新建转换,步骤同上

3、构建kettle流程图

4、执行转换

5、结果查询,目标表数据已经更新和插入

  五、switch/case组件

1、需求

2、构建流程图

3、配置组件

4、执行

 六、SQL脚本组件

1、需求

2、构建kettle流程图

3、配置组件,双击组件

4、保存执行


一、txt文本转换成excel

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

1、新建、转换

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

2、构建流程图

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

 

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

 

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

 

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

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

3.1、配置文件文本输入组件

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

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

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

 

(4)点击「字段」选项卡,再点击「获取字段」按钮,可以读取到txt文件中的所有字段。获取完也可以预览。点确定保存。

 

 3.2、 配置Excel输出组件

(1)双击 Excel输出组件,在弹出窗口中点击「浏览」按钮。我先暂时保存到桌面。然后点击确定。记得把扩展名删除

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

 

4、保存执行

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

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

 也会有日志输出

执行结果,如果执行结果表中,长数字有逗号分隔的话,在双击表输出,【字段】 格式那一列,调整格式即可

二、excel转换成mysql

表格就按照我们刚才转换的表格来转换成MySQL数据

(1)在MySQL数据库中创建数据库,这个根据自身情况。我就在现有test库中测试了。

(2)根据以上步骤,新建转换。

(3)构建流程图,选择excel输入和表输出

(4)将两个组件连接起来

(5)双击表输入,文件选择源文件的位置,然后点击增加,在点击【工作表】,获取工作表名称,把标签移到右边

 

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

 

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

(8)点击「预览记录」按钮查看抽取到的数据。如果数据格式有我呢提,在调整格式

 

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

(10)配置MySQL组件,双击表输出组件

        数据库连接这里 点击新建连接,配置数据库连接信息,点击测试连接,看是否成功,如果报错,看是否世缺少jdbc的驱动,去MySQL官网下载对应的驱动即可。

 

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

 

(12)点击下方的「SQL」按钮,可以看到Kettle会自动帮助我们生成MySQL创建表的SQL语句,

        我们将age和gender字段的数据类型改为INT类型。并点击执行按钮,会自动在MySQL数据库中创建该表。可以去数据库验证下。执行完之后,点击确定并保存组件信息。

 

(13)保存并执行转换

(14)查看数据,由于ID 数据过大,需要把属性换成 bigint

 三、 MySQL表之间转换

1、共享数据库连接

        在后续的Kettle中,我们需要多次用到上面的数据库连接。在Kettle中,可以将一个数据库共享,这样其他的Kettle转换就都可以复用该数据库连接了。

(1)在转换中,点击「主对象树」,点击[DB连接]右键新建数据库连接(如果连接已经存在,则无需创建)

(2)右键单击需要的数据库连接,选择「共享」

(3)发现刚刚选择的数据库连接已经变成黑体字,说明已经共享成功。

2、需求:将user表中的数据,转换到user1表中

3、新建转换

4、构建kettle流程图

(1)从核心对象的输入组件中,将「表输入」、「表输出」组件拖拽到中间的空白处。

(2)安装Shift键,并鼠标左键点击表输入组件,并拉动鼠标,移动到表输出组件,松开鼠标。

5、配置Kettle数据流图中的组件

(1)双击表输入组件,在弹出对话框中选择「获取SQL查询语句」。选择要转换的表。点击否

 

(2)点击「预览」按钮,查看是否能够从MySQL读取数据。

(3)双击表输出组件,在目标表输入t_user1,点击SQL按钮,会自动生成sql创建表语句,然后执行。

(4)保存转换,并启动。

(5)查询数据库,user表中的数据已经同步过来了。因为我加了筛选条件,所以只有张三的数据被同步了。

 四、插入和更新组件

        插入/更新组件能够将Kettle抽取的数据,与某个表的数据进行对比,如果数据存在就更新,不存在就插入。

1、需求

修改 user中的张三这一行数据,修改 age 为 30。如果想插入指定的数据,只能通过表输出组件

2、新建转换,步骤同上

3、构建kettle流程图

        1、选择一个表输入、表输出组件,将两个组件连接

        2、配置流程图中的表输入组件,如上2.5.1步骤

        3、双击 插入/更新 组件,在目标表,点击浏览按钮,找到user1表。

        4、添加用来查询的关键字,并获取和更新字段,确定,保存

原表:

 

目标表:

 

4、执行转换

 

5、结果查询,目标表数据已经更新和插入

  五、switch/case组件

kettle中提供了一种实现判断的组件叫做switch/case。

1、需求

从 user 表中读取所有用户数据,将性别为男的用户导出到一个Excel、性别为女的导出到另外一个Excel。

2、构建流程图

(1)将表输入组件拖拽到中间的空白区域。

(2)从流程文件夹中将 Switch/case 组件拖拽到中间的空白区域。

(3)再分别拖入两个Excel输出组件。

(4)按住shift键,将组件按照下图方式连接起来。

3、配置组件

(1)配置表输入组件

双击表输入组件,点击获取sql查询。

(2)配置switch/case组件

        此处要指定,按照性别来判断输出到Excel文件。需要设置 Switch字段为gender,在Case值列表中将值分别改为男、女。如果gender是男的话,则将数据装载到 Excel输出 - 男,如果gender是女的话,将数据装载到 Excel输出 - 女。

 (3)配置Excel输出组件

双击Excel输出组件,分别指定输出到指定的文件夹中。两个输出组件操作相同。

 

 

(4)配置完成之后,保存,

4、执行

执行结果就能看出来,已经转换到表中

 六、SQL脚本组件

执行SQL脚本组件,可以让Kettle执行一段SQL脚本。我们可以利用它来自动执行某些操作。

1、需求

使用Kettle执行SQL脚本,将 user1 表中的数据清空。

2、构建kettle流程图

我们在核心对象中,将脚本文件夹下的【执行SQL脚本】拖拽到右侧的空白中,如图所示:

3、配置组件,双击组件

我们要将 t_user1 表中的数据清空,所以脚本中要执行的语句如下:

TRUNCATE TABLE t_user1;

4、保存执行

 

  • 19
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁华依在

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值