前言:
💞💞大家好,书生♡,今天主要和大家分享一下ETL的工具Kettle的详细使用,希望对大家有所帮助。感谢大家关注点赞。
💞💞前路漫漫,希望大家坚持下去,不忘初心,成为一名优秀的程序员
个人主页⭐: 书生♡
gitee主页🙋♂:闲客
专栏主页💞:大数据开发
博客领域💥:大数据开发,java编程,前端,算法,Python
写作风格💞:超前知识点,干货,思路讲解,通俗易懂
支持博主💖:关注⭐,点赞、收藏⭐、留言💬
目录
1.kettle的介绍
1.1 数据库和数据仓库
我们之前学过MySQL的基本语法,了解什么是MySQL,那大家知道什么是数据仓吗?
我们先来了解一下数据库与数据仓的区别:
数据库: mysql 对于数据进行增删改查操作,一般都是业务数据库
- 需要数据高速处理,及时响应
- 对数据的安全性有极高的要求
- 数据内容,数据形式比较单一.
- 数据库一般是app或者用户通过接口访问.
数据仓库: 一般是用于数据分析的数据集中平台
- 将多重数据源(业务数据库, 日志信息, 备份文件,爬虫文件,问卷调查等)的数据集中存放在数据仓库中,便于分析统计
- 数据仓库更加重视的是数据的吞吐量.对及时响应和高效读写没有太高的要求.
- 数据仓库一般是数据业务人员使用
1.2 什么是ETL
ETL是英文Extract-Transform-Load的缩写,用来描述将数据从源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程,它能够对各种分布的、异构的源数据(如关系数据)进行抽取,按照预先设计的规则将不完整数据、重复数据以及错误数据等“脏"数据内容进行清洗,得到符合要求的“干净”数据,并加载到数据仓库中进行存储,这些“干净”数据就成为了数据分析、数据挖掘的基石。
抽取(extract)、转换(transform)、加载(load)
E: extract 抽取数据
从多种不同的数据源中抽取数据(从每一个数据源中抽取数据的方式不一样)
T: transform 转换数据
数据转换一般分为两步骤:
数据处理:数据的拆分,合并,单位统一,统一逻辑等等
数据清洗:处理异常值,缺失值,重复值 (不破坏数据的客观规律)
L: load 数据加载
- 一般是将数据加载到数据仓库中,但是也可以加载到备份文件或者日志记录中.
- 在开发中,重要的数据信息,我们通常会保存不止一份(数据仓库存储+文件备份)
2. Windows下安装Kettle
我们在安装kettle之前,首先要安装jdk。
为什么要安装jdk呢?
因为Kettle是Java语言开发的,该软件的运行需要Java运行环境的依赖。因此需要先安装JDK,准备好Java软件的运行环境。
什么是jdk?
jdk : java 开发工具包 (java开发环境)
jre : java 运行时环境 (java运行环境)
jvm : java 虚拟机环境 (java跨平台基础)
我们在下载好jdk之后,我们需要添加jdk的环境变量:
- 安装jdk8, 存放到指定位置即可,但是务必要能够找到该软件
- 找到java.exe文件的文件路径,并复制该文件路径
- 添加环境变量,在搜索栏中搜索"环境变量", 点击下方查询结果打开系统环境变量
- 点击环境变量进入编辑界面
- 点击编辑系统环境变量 >> 新建 >> 输入变量信息后点击确定
- 双击Path添加新的环境变量
%JAVA_HOME%bin\
,点击确定,保存环境变量修改内容- 验证环境变量的添加,在终端窗口输入
java -version
如果能够输出版本信息,则java环境变量配置成功.
3. 使用kettle进行操作
在我们安装好jdk的配置环境以后,我们就可以下载安装
3.1 将txt文件抽取到excel中
-
双击转换啊,创建新的标签页(或者点击文件–新建–转换/也可以使用ctrl +n快速创建)
-
从输入对象中拖拽 文本文件输入和从输出对象中拖拽excel输出到操作区域。
-
点击shift从文本文件输入拖转一个箭头到excel输出
-
设置文本文件输入内容
4.1 双击进入文本文件输入编辑, 点击浏览,选择我们要作为输入源的文本文件
4.2 点击增加,将文件路径,加载到选中的文件中
4.3 修改内容中的分隔符和编码格式
4.4 选择字段, 点击获取字段,查看字段的类型和格式
4.5 获取字段信息后, 点击预览记录, 如果出现与预期不符的数据类型或格式,在上方字段处修改后,重新预览
-
设置excel输出内容
5.1 双击进入excel输出编辑.点击浏览, 选择excel输出位置,编辑输出文件名,点击保存
5.2 删掉扩展名信息
5.3 选择格式, 设置输出excel的样式
5.4 选择字段,点击获取字段,查看字段与预期格式和数据类型是否匹配,不匹配则在字段内容中修改,修改后点击确定
5.6. 重新保存并执行脚本, 查看最终输出结果,发现结果已经正常显示
- 字段格式表示方式
#
代表以字符串形式输出0 代表数字仅保留整数部分
0.00 代表保留两位小数
yyyy-MM-dd 年-月-日格式
yyyy-MM-dd HH:mm:ss 年-月-日 时:分:秒 格式
3.2 将excel表数据抽取到表中
因为 kettle不支持创建数据库, 但是可以创建数据表,所以我们要先创建一个数据库
-
创建一个新的转化脚本, 在kettle中使用ctrl _ n 快速创建(详情见上一个)
-
从核心对象中, 将excel输入对象, 和表输出对象拖拽到操作区(下图)
-
按住shift从Excel将箭头拖拽到表输出位置, 指定数据的流转方向(下图)
-
编辑excel输入内容
- 4.1 双击打开excel输入编辑界面, 点击浏览找到要加载的excel数据,选择成功后点击增加
- 4.2 选择工作表标签, 获取工作表名称, 选择需要的工作表移动到右侧,点击确定
- 4.3 点击获取来自头部数据的字段, 点击预览记录, 查看输出内容时,发现数据格式不正确.
- 4.4 修改数据格式后,点击确定
- 编辑表输出内容
- 5.1 双击打开表述出编辑界面, 点击新建, 编辑数据库连接信息,测试连接成功后点击确定.
如果此时失败:
1.查看服务器有没有开启, 在连接数据库之前,确保node1是开启状态
2.没有放置mysql连接驱动,将mysql驱动包,放置在 安装目录的lib文件夹下即可
- 5.2 书写目标表名称, 点击下方sql按钮,修改建表语句中的字段类型, 点击执行成功后,确定,完成编辑.
- 保存脚本数据
- 如果我们出现了中文问号问题,就要在mysql连接信息中增加一个键值对
characterEncoding = utf8
3.3 将mysql表中的数据插入到另一个表中
数据连接共享:
- 将表输入, 和表输出对象拖拽到操作区, 并且按住shift将箭头从表输入连接到表输出
- 编辑表输入
- 2.1 获取db连接, 点击下方的获取查询sql语句, 选择对应的表,点击确定.
- 2.2 查询预览,如果没有问题直接点击确定, 表输入编辑完成
-
编辑表输出内容
选择数据库连接, 输入目标表名,点击下方的sql进行建表,之后选择确定.
-
保存脚本文件
-
执行脚本文件
-
验证mysql中的数据信息
3.4 执行mysql表的插入更新操作
清空t_user1表
truncate table kettle_demo.t_user1;
- 将表输入对象和插入/更新对象拖拽到kettle操作区, 按住shift将数据流转方向指定为从表输入 到插入/更新
- 编辑表输入
- 编辑插入/更新内容
选择数据库连接, 在目标表处选择浏览,找到要插入的表,点击确定即可
设置两张表中id值相同,即为一个数据记录, 如果数据记录相同,下方更新字段为Y的数据将会进行更新.
保存并执行脚本文件,将t_user表中的李四年龄修改为30岁
再次执行脚本文件,对于修改过的数据进行了更新
3.5 switch_case条件判断
编辑表输入内容(根3.3的是一样的,打开参考上面的)
编辑switch_case流程内容, 先指定条件判断的字段, 并说明不同的case值执行哪一个步骤
编辑excel输出内容, 确定表的输出位置, 以及字段格式, 删除扩展名(同3.3图)
保存并执行脚本,验证执行结果是否正确
3.6 设置转换参数
拖拽一个执行SQL脚本
添加转换参数
创建sql脚本文件, 在sql语句中,使用${参数名称}设置参数, 并勾选下方的替换参数
保存脚本后, 执行脚本, 执行时传入转换参数
4. windows下执行job任务
- 创建一个作业
- 将 start 转换 和 成功 三个标签,拖转到操作区,并使用shift拖转箭头,指明任务方向
- 双击转换,添加之前保存的转换脚本
在start处设置循环执行时间为间隔5秒
-
保存并执行作业
-
如果作业需要停止则点击方块即可
💕💕在这篇文章中,我们深入探讨了kettle的相关使用,希望能为读者带来启发和收获。
💖💖感谢大家的阅读,如果您有任何疑问或建议,欢迎在评论区留言交流。同时,也请大家关注我的后续文章,一起探索更多知识领域。
愿我们共同进步,不断提升自我。💞💞💞