ETL工具 - Kettle 输入输出算子介绍

这篇具有很好参考价值的文章主要介绍了ETL工具 - Kettle 输入输出算子介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Kettle 输入输出算子介绍

上篇文章对 Kettle 进行了简单的介绍及做了个简单的案例,但是对 KettleStep算子工具没有做过多的解释,本篇文章从输入输出算子工具开始进行介绍。

下面是上篇文章的地址:

ETL工具 - Kettle 介绍及基本使用

二、输入算子介绍

输入是转换里面的第一个分类,用来完成 ETL 中的 E 抽取数据或者生成数据。在Kettle 中输入算子主要有如下分类:

ETL工具 - Kettle 输入输出算子介绍

2.1 CSV文件输入

准备 CSV文件内容如下:

id,name,sex,grade1,grade2,grade3
1,小明,男,90,80,70
2,小红,女,91,81,71
3,小兰,女,92,82,72
4,小爱,女,93,83,73
5,张三,男,94,84,74
6,李四,男,95,85,75
7,王五,男,96,86,76
8,赵六,男,97,87,77
9,小六,男,98,88,78
10,小七,男,99,89,79

拖入一个CSV文件输入:

ETL工具 - Kettle 输入输出算子介绍

  • 步骤名称:在同一个转换里面要保证唯一性
  • 文件名:选择对应的CSV文件
  • 列分隔符:默认是逗号
  • 封闭符:结束行数据的读写
  • NIO缓存大小:文件如果行数过多,需要调整此参数
  • 包含列头行:意思是文件中第一行是字段名称行,表头不进行读写
  • 行号字段:如果文件第一行不是字段名称或者需要从某行开始读写,可在此输入行号
  • 并发运行?:选择并发,可提高读写速度
  • 字段中有回车换行?:不选择,会将换行符做数据读出
  • 文件编码:如果预览数据出现乱码,可更换文件编码,例如 UTF-8

点击预览可以对 CSV数据进行预览:

ETL工具 - Kettle 输入输出算子介绍

2.2 文本文件输入

例如有如下文本:

id;name;age
1;张三;20
2;李四;21
3;王五;22

拖入一个文本文件输入:

ETL工具 - Kettle 输入输出算子介绍

ETL工具 - Kettle 输入输出算子介绍

ETL工具 - Kettle 输入输出算子介绍

点击预览查看数据:

ETL工具 - Kettle 输入输出算子介绍

2.3 Excel输入

例如有如下 Excel

ETL工具 - Kettle 输入输出算子介绍
拖入一个 Excel输入:

ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
预览数据:

ETL工具 - Kettle 输入输出算子介绍

2.4 JSON input

有如下JSON示例数据,解析出 type、name、age、grade 字段

{
    "status":200,
    "message":"success",
    "data":[
        {
            "type":1,
            "data":[
                {
                    "name":"张三",
                    "age":20,
                    "grade":90
                },
                {
                    "name":"李四",
                    "age":21,
                    "grade":88
                },
                {
                    "name":"王五",
                    "age":22,
                    "grade":70
                }
            ]
        },
        {
            "type":2,
            "data":[
                {
                    "name":"小红",
                    "age":20,
                    "grade":90
                },
                {
                    "name":"小明",
                    "age":21,
                    "grade":88
                },
                {
                    "name":"小兰",
                    "age":22,
                    "grade":70
                }
            ]
        }
    ]
}

JSON 需要了解下 JSON Path 语法:

符号 描述
$ 查询的根节点对象,用于表示一个json数据,可以是数组或对象
@ 过滤器断言(filter predicate)处理的当前节点对象,类似于java中的this字段
* 通配符,可以表示一个名字或数字
.. 可以理解为递归搜索,Deep scan.Available anywhere a name is required.
.<name> 表示一个子节点
['<name>'(,'<name>)] 表示一个或多个子节点
[<number>(<number>)] 表示一个或多个数组下标
[start:end] 数组片段,区间为[start,end),不包含end
[?(<expression>)] 过滤器表达式,表达式结果必须是boolean

例如:
type 字段,语法为:$.data..type
data.data 信息,语法为:$.data..data
name 信息,语法为:$.data..data..name

下面先拖入一个 JSON input 解析出 type、data

ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍

预览下数据:

ETL工具 - Kettle 输入输出算子介绍

下面再拖一个 JSON input 解析 data

ETL工具 - Kettle 输入输出算子介绍

第二个JSON input 内容获取上一个的 data 字段:

ETL工具 - Kettle 输入输出算子介绍

ETL工具 - Kettle 输入输出算子介绍

运行转换,查看JSON input2 的结果:

ETL工具 - Kettle 输入输出算子介绍

2.5 XML输入

例如有如下 XML信息,解析出 info属性、type属性、name字段、age字段

<?xml version="1.0" encoding="UTF-8"?>
<data info="datainfo">
    <list type="1">
         <item>
            <name>张三</name>
            <age>20</age>
         </item>
         <item>
            <name>李四</name>
            <age>21</age>
         </item>
    </list>
    <list type="2">
         <item>
            <name>王五</name>
            <age>22</age>
         </item>
         <item>
            <name>赵六</name>
            <age>23</age>
         </item>
    </list>
</data>  

XML 需要了解下 XPath 语法:

表达式 描述
nodename 选取此节点的所有子节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性

下面拖入一个 Get data from XML XML 文件输入:

ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
预览下数据:

ETL工具 - Kettle 输入输出算子介绍

2.6 表输入

表输入用到比较多的一种输入控件,可以连接市面上常见的各种数据库,比如Oracle,Mysql,SqlServer等。但是在连接各个数据库之前,我们需要先配置好对应的数据库驱动,这里以mysql为例:

首先需要将 MySQL 的驱动放到 kettle 安装目录的 lib 下:

ETL工具 - Kettle 输入输出算子介绍
例如有如下表和数据:

CREATE TABLE `user`  (
  `id` int(0) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `age` int(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

写入测试数据:

INSERT INTO `user` VALUES (1, '小明', 90);
INSERT INTO `user` VALUES (2, '小红', 91);
INSERT INTO `user` VALUES (3, '小兰', 92);
INSERT INTO `user` VALUES (4, '小爱', 93);
INSERT INTO `user` VALUES (5, '张三', 94);
INSERT INTO `user` VALUES (6, '李四', 95);
INSERT INTO `user` VALUES (7, '王五', 96);
INSERT INTO `user` VALUES (8, '赵六', 97);

下面拖入一个 表输入 :

ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
预览数据:

ETL工具 - Kettle 输入输出算子介绍

三、输出算子

输出算子是ETL里面的LLoad),主要做数据加载的工作:

ETL工具 - Kettle 输入输出算子介绍
下面测试中的输入就使用上面演示的表输入的结构:

ETL工具 - Kettle 输入输出算子介绍

3.1 Microsoft Excel 输出

拖入一个 Microsoft Excel 输出 ,这个和 Excel 输出相比支持更多格式:

ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍

运行之后查看结果:

ETL工具 - Kettle 输入输出算子介绍

3.2 文本文件输出

拖入一个 文本文件输出:

ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
运行查看结果:

ETL工具 - Kettle 输入输出算子介绍

3.3 SQL文件输出

拖入一个 SQL文件输出:

ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
运行查看结果:

ETL工具 - Kettle 输入输出算子介绍

3.4 表输出

可以将数据直接写入到数据库中的表中:

test 库下新建一个表 user2

CREATE TABLE `user2` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

下面拖入一个表输出:
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
执行后查看结果:

ETL工具 - Kettle 输入输出算子介绍

3.5 更新

将数据库已经存在的记录与数据流里面的记录进行对比,如果发现区别就更新,但不存在的数据不会新增:

修改下 user2 表数据:

ETL工具 - Kettle 输入输出算子介绍
下面拖入一个 更新:
ETL工具 - Kettle 输入输出算子介绍

ETL工具 - Kettle 输入输出算子介绍

运行之后查看结果:

ETL工具 - Kettle 输入输出算子介绍

3.6 插入/更新

和上一个节点的区别是如果不存在则新增:

修改 user2 表删除 name 为 小明、小红 的行,并随机修改几个字段值:

ETL工具 - Kettle 输入输出算子介绍
拖入一个插入/更新

ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍

运行后查看结果:

ETL工具 - Kettle 输入输出算子介绍

3.7 删除

可以删除数据库表中指定条件的数据:

ETL工具 - Kettle 输入输出算子介绍
ETL工具 - Kettle 输入输出算子介绍
运行之后查看结果:

ETL工具 - Kettle 输入输出算子介绍文章来源地址https://www.toymoban.com/news/detail-429965.html

到了这里,关于ETL工具 - Kettle 输入输出算子介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据ETL工具对比(Sqoop, DataX, Kettle)

    前言 在实习过程中,遇到了数据库迁移项目,对于数据仓库,大数据集成类应用,通常会采用 ETL 工具辅助完成,公司和客户使用的比较多的是 Sqoop , DataX 和 Kettle 这三种工具。简单的对这三种ETL工具进行一次梳理。 ETL工具,需要完成对源端数据的抽取(exat), 交互转换(

    2024年02月11日
    浏览(58)
  • mysql 批量数据插入很慢(kettle 输入输出组件) 性能优化办法

    背景 最近在做数仓重构项目,遇到一些性能瓶颈,这里记录一下解决办法。 随着业务数据每天都在增加,几年前开发的etl任务开始跑不动了。大表一般是通过增量的方式插入,但是修复bug 或者每月/季度跑一次的情况 需要跑全量,原来的etl任务可能需要跑几个小时,甚至出

    2024年01月17日
    浏览(43)
  • 主流的开源ETL工具介绍

            开源ETL(Extract, Transform, Load)工具为组织提供了一种经济高效的方法来集成来自不同源的数据,以便进行分析、报告和业务智能。这些工具通常具有灵活性、可扩展性和较低的总体拥有成本。以下是几种流行的开源ETL工具及其特点、安装步骤和应用场景的概述。

    2024年04月23日
    浏览(34)
  • Springboot整合ETL引擎Kettle的使用

    ETL 是英文Extract-Transform-Load的缩写,用来描述将数据从源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程,它能够对各种分布的、异构的源数据(如关系数据)进行抽取,按照预先设计的规则将不完整数据、重复数据以及错误数据等“脏\\\"数据内容进行清洗,得到符合

    2024年02月14日
    浏览(46)
  • kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ consumer实战

    1、上一节课我们学习了MQTT producer 生产者步骤,MQTT consumer消费者步骤。该步骤可以从支持MRQTT协议的中间件获取数据,该步骤和kafka consumer 一样可以处理实时数据交互,如下图所示:  2、双击步骤打开MQTT consumer 配置窗口,如下图所示: Step name: 自定义步骤名称。 Transformat

    2024年04月28日
    浏览(51)
  • 关于Kettle ETL java脚本编写遇到的一些问题记录

    使用方法**logBasic()**参数必须是字符串 这部分内容会在ETL的日志窗口显示 1.获取上个节点传输的数据 可以直接在左侧双击获取 2.全局参数获取 在启动运行的变量设置参数 在java代码中获取方式 3.获取当前节点参数 在当前窗口下方有个 参数 Tab页,在这里设置 在java代码中获取

    2024年02月12日
    浏览(41)
  • GPIO引脚的模式设置:开漏、推挽、拉高、拉低、中断输入、串行通信、模拟输入输出、容错输入、PWM输出。过零检测介绍。

    开漏输出(软件): 将GPIO口设置为开漏输出模式,可以实现开漏输出控制方式,输出电平只能被拉低,而不能被拉高。在使用开漏输出时,需要外部接上一个上拉电阻,将输出电平拉高到高电平。开漏输出常用于驱动I2C总线、LED灯等场景中。 硬件设置为开漏输出的情况(硬

    2024年02月08日
    浏览(40)
  • 【C++杂货铺】C++介绍、命名空间、输入输出

     C语言是 结构化 和 模块化 的语言,适合处理 较小规模 的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机,20世纪80年代,计算机界提出了 OOP (object oriented programming: 面向对象 )思想,支持面向对象的程序设计语言应

    2024年02月16日
    浏览(42)
  • 【C++初阶】C++入门——C++介绍、命名空间、输入输出

     C语言是 结构化 和 模块化 的语言,适合处理 较小规模 的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机,20世纪80年代,计算机界提出了 OOP (object oriented programming: 面向对象 )思想,支持面向对象的程序设计语言应

    2024年02月11日
    浏览(43)
  • 高项备考葵花宝典-项目范围管理输入、输出、工具和技术

            项目范围管理包括确保项目 “ 做 ” 且 “只做” 所需的 全部 工作(即不能少做,也不能多做,如果多做,就要消耗团队额外的时间和资源,并且无法被认可),以成功完成项目。项目范围管理主要在于定义和控制哪些工作应该包括在项目内,哪些不应该包括在项

    2024年02月04日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包