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、保存执行

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文了解spring的aop知识

推荐工具 objectlog 对于重要的一些数据,我们需要记录一条记录的所有版本变化过程,做到持续追踪,为后续问题追踪提供思路。objectlog工具是一个记录单个对象属性变化的日志工具,工具采用spring切面和mybatis拦截器相关技术编写了api依赖包&a…

机器学习实战宝典:用scikit-learn打造智能应用

书接上文——《数据探险家的终极指南:用Python挖掘机器学习的奥秘》 前文我们在这段精彩的机器学习探险之旅中,从基础概念出发,深入探索了使用Python和scikit-learn库进行数据分析和模型构建的全过程。 我们首先了解了机器学习的基本原理&am…

Mysql 锁

锁 从锁的性能有乐观锁和悲观锁;锁的粒度有行锁、页锁、表锁;锁的对数据库操作类型有读锁、写锁、意向锁 乐观锁:采用cas机制,不会阻塞数据库操作,只会针对当前事务进行失败重试。(用于写操作不多的情况)悲观锁&…

[c++]多态的分析

多态详细解读 多态的概念多态的构成条件 接口继承和实现继承: 多态的原理:动态绑定和静态绑定 多继承中的虚函数表 多态的概念 -通俗的来说:当不同的对象去完成某同一行为时,会产生不同的状态。 多态的构成条件 必须通过基类的指针或者引用调用虚函数1虚…

C语言/数据结构——(链表的回文结构)

一.前言 今天在牛客网上刷到了一道链表题——链表的回文结构https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa?,巧合的是它的解题思路恰好是我们一起分享过两道链表题的汇总。这两道题分别是反转链表和链表的中间节点。废话不多数&#xff0c…

Redis 源码安装和入门介绍

Linux下的redis源码安装 redis介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串(strings),…

智能商品计划系统:引领未来零售业的革新之路

随着科技的飞速发展,人工智能(AI)和大数据技术已成为推动各行业革新的关键动力。在零售行业中,智能商品计划系统的出现,正逐步改变着传统的商品规划与管理方式,为品牌注入新的活力与竞争力。本文将对智能商…

Java入门基础学习笔记14——数据类型转换

类型转换: 1、存在某种类型的变量赋值给另一种类型的变量; 2、存在不同类型的数据一起运算。 自动类型转换: 类型范围小的变量,可以直接赋值给类型范围大的变量。 byte类型赋值给int类型,就是自动类型转换。 pack…

Android 屏幕适配全攻略(中)-从九宫格到矢量图,揭秘Android多屏幕适配的正确打开方式

在移动互联网时代,无论是小小的手机屏幕,还是大大的平板显示器,Android 应用都必须做到完美适配,给用户以极佳的体验。本文将剖析 Android 多屏幕适配背后的种种技术细节,为您揭开最佳实践的正确打开方式,让…

速卖通ip地址会相互影响吗?如何防止账号关联?

在跨境电商行业,大部分平台都是不允许一个卖家操作多个店铺的,如果被平台检测出账户关联,可能会被封店。在速卖通平台,会通过IP地址来判断是否经营多个账号吗?IP地址会使店铺相互影响吗? 一、速卖通IP地址会关联吗? 首先各位卖…

解决mybatis的配置文件没代码提示的问题

1.将org.apache.ibatis.builder.xml包里的两个dtd文件复制出来,jar包里复制 2.复制dtd的url地址: http://mybatis.org/dtd/mybatis-3-mapper.dtd 一样的做法! 3.关闭两个配置文件,重新打开,就可以有代码提示了&…

【智能优化算法】白鲨智能优化算法(White Shark Optimizer,WSO)

白鲨智能优化算法(White Shark Optimizer,WSO)是期刊“KNOWLEDGE-BASED SYSTEMS”(中科院一区期刊 IF8.6)的2022年智能优化算法 01.引言 白鲨智能优化算法(White Shark Optimizer,WSO)的核心理念和基础灵感来自大白鲨的行为,包括它们在导航和…

从项目开始学习Vue——02(若依框架)

往期: 从项目开始学习Vue——01 目录标题 一、基础插件(一)路由Vue Router(二)导航守卫(路由拦截器)二、Vuex(一)什么是VuexVuex的部分介绍内容: &#xff08…

QQ超大文件共享(别用,传进去后,压缩都显示不出来,LJ qq!)(共享文件)

文章目录 需要共享双方同时在线开启方法第一次会提示设置默认共享目录&#xff0c;默认是E:\QQFileShare\<qq号>\&#xff1a;然后新建共享会在其后创建共享目录&#xff0c;共享目录中只能共享文件。需要点击添加文件&#xff0c;直接把文件拷贝到目录里好像还不行&…

C语言/数据结构——(相交链表)

一.前言 今天在力扣上刷到了一道题&#xff0c;想着和大家一起分享一下这道题——相交链表https://leetcode.cn/problems/intersection-of-two-linked-lists废话不多说&#xff0c;让我们开始今天的分享吧。 二.正文 1.1题目描述 是不是感觉好长&#xff0c;我也这么觉得。哈…

网络编程套接字和传输层tcp,udp协议

认识端口号 我们知道在网络数据传输的时候&#xff0c;在IP数据包头部有两个IP地址&#xff0c;分别叫做源IP地址和目的IP地址。IP地址是帮助我们在网络中确定最终发送的主机&#xff0c;但是实际上数据应该发送到主机上指定的进程上的&#xff0c;所以我们不仅要确定主机&…

OAuth 2.0 和 OAuth 2.1

OAuth 2.0 和 OAuth 2.1比较&#xff1a; OAuth 2.0 和 OAuth 2.1 是授权框架的不同版本&#xff0c;它们用于允许应用程序安全地访问用户在另一个服务上的数据。以下是它们之间的一些主要区别&#xff1a; 安全性增强&#xff1a;OAuth 2.1 旨在提高安全性&#xff0c;它整合…

什么是云原生架构,我们该如何做好云原生安全,引领云计算时代的应用程序革新

随着云计算技术的飞速发展&#xff0c;企业面临着前所未有的机遇和挑战。在这个高度竞争的市场中&#xff0c;传统的应用程序架构因其僵化、不易扩展和维护的特点&#xff0c;已难以满足当今企业对灵活性、可伸缩性和高效性的追求。在这样的背景下&#xff0c;云原生架构应运而…

git rebase 合并当前分支的多个commit记录

git rebase 合并当前分支的多个commit记录 git rebase 相关的选项和用法step1&#xff1a;找到想要合并的 commitstep2. 使用 rebase -istep3. 编辑提交历史&#xff1a;step4.编辑合并后的提交信息step5.完成 rebase 过程&#xff1a;step6.**推送更新&#xff1a;**step6.**再…

FFmpeg常用API与示例(三)—— 音视频解码与编码

编解码层 1.解码 (1) 注册所有容器格式和 CODEC:av_register_all() (2) 打开文件:av_open_input_file() (3) 从文件中提取流信息:av_find_stream_info() (4) 穷举所有的流&#xff0c;查找其中种类为 CODEC_TYPE_VIDEO (5) 查找对应的解码器:avcodec_find_decoder() (6) …