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

news2024/11/26 13:53:05

一、Kettle 输入输出算子介绍

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

下面是上篇文章的地址:

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

二、输入算子介绍

输入是转换里面的第一个分类,用来完成 ETL 中的 E 抽取数据或者生成数据。在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文件输入:

在这里插入图片描述

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

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

在这里插入图片描述

2.2 文本文件输入

例如有如下文本:

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

拖入一个文本文件输入:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击预览查看数据:

在这里插入图片描述

2.3 Excel输入

例如有如下 Excel

在这里插入图片描述
拖入一个 Excel输入:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
预览数据:

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

预览下数据:

在这里插入图片描述

下面再拖一个 JSON input 解析 data

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

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 文件输入:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
预览下数据:

在这里插入图片描述

2.6 表输入

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

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

在这里插入图片描述
例如有如下表和数据:

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里面的LLoad),主要做数据加载的工作:

在这里插入图片描述
下面测试中的输入就使用上面演示的表输入的结构:

在这里插入图片描述

3.1 Microsoft Excel 输出

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运行之后查看结果:

在这里插入图片描述

3.2 文本文件输出

拖入一个 文本文件输出:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行查看结果:

在这里插入图片描述

3.3 SQL文件输出

拖入一个 SQL文件输出:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行查看结果:

在这里插入图片描述

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;

下面拖入一个表输出:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行后查看结果:

在这里插入图片描述

3.5 更新

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

修改下 user2 表数据:

在这里插入图片描述
下面拖入一个 更新:
在这里插入图片描述

在这里插入图片描述

运行之后查看结果:

在这里插入图片描述

3.6 插入/更新

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

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

在这里插入图片描述
拖入一个插入/更新

在这里插入图片描述
在这里插入图片描述

运行后查看结果:

在这里插入图片描述

3.7 删除

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

在这里插入图片描述
在这里插入图片描述
运行之后查看结果:

在这里插入图片描述

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

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

相关文章

正点原直流有刷驱动板的硬件解说

这里写目录标题 H桥电流采集电路电源电压采集电路温度采集电路过流检测电路过流保护电路![请添加图片描述](https://img-blog.csdnimg.cn/fa130e17e23b471e8e27ae942e1ff125.png) H桥 因为光耦(EL0631)作用&#xff0c;PWM 引脚电平输入IN相反。 然后半桥芯片的逻辑表为&#x…

【Python】BeautifulSoup

一、什么是BeautifulSoup Beautiful Soup 简称 BS4&#xff08;其中 4 表示版本号&#xff09;是一个 Python 第三方库&#xff0c;它可以从 HTML 或 XML 文档中快速地提取指定的数据。 二、BS4下载安装 点击最下面的终端进如命令行界面 &#xff08;进入成功界面&#xff1a;&…

C++/Qt 小知识记录3

工作中遇到的一些小问题&#xff0c;总结的小知识记录&#xff1a;C/Qt 小知识 QLineEdit限制输入大于0的正整数QLayout内清空已布局的WidgetWindows结束进程直接结束&#xff0c;子进程不响应结束事件正常结束&#xff0c;子进程响应结束事件 CMake关闭控制台Console实体与值对…

【网络编程】网络基础知识总结

文章目录 一、局域网与广域网二、协议2.1 协议的概念2.2 协议分层2.3 数据传输的条件 三、OSI七层模型四、TCP/IP五层&#xff08;四层&#xff09;模型五、网络传输5.1 预备知识——报头5.2 局域网通信原理5.3 以太网和令牌环网5.3 网络传输流程图5.3.1 同一网段的两台计算机的…

海岛旅行回忆总结(不定更)

文章目录 概述大辣甲岛外伶仃岛、东澳岛长洲、南丫岛下川岛 概述 喜欢大海&#xff0c;与海滩相比&#xff0c;海岛的空气更好、海水更靓、人更少、污染更少 海岛位置日期天气小结大辣甲岛惠州2017年7月29~30日台风前夕&#xff0c;云淡风轻&#xff0c;阳光猛烈开发程度低&…

分享2款CSS3母亲节主题寄语文字动画特效

目录 ❤️ 前言 第一款&#xff1a;妈妈您辛苦了&#xff01; 一、效果图 二、代码实现 第二款&#xff1a;Mothers Day&#xff01; 一、效果图 二、代码实现 ❤️ 祝福 ❤️ 前言 母亲节&#xff0c;在每年五月的第二个星期日&#xff0c;是用来感谢母亲的节日。…

SpringAOP

SpringAOP 一、AOP1. AOP简介1.1 AOP简介和作用1.2 AOP中的核心概念 2. AOP入门案例【重点】2.1 AOP入门案例思路分析2.2 AOP入门案例实现【第一步】导入aop相关坐标【第二步】定义dao接口与实现类【第三步】定义通知类&#xff0c;制作通知方法【第四步】定义切入点表达式、配…

阿里云g8i服务器Intel Xeon(Sapphire Rapids) Platinum 8475B

阿里云服务器ECS通用型实例规格族g8i采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器&#xff0c;3.2 GHz睿频&#xff0c;g8i实例采用阿里云全新CIPU架构&#xff0c;可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。阿里云百科分享阿里云服…

< C++ >lesson2.C++入门下

文章目录 1. 内联函数❤️1.1 内联函数的定义1.2 特性 2. auto关键字&#x1f90d;2.1 auto简介2.2 auto使用细则2.3 auto不能进行推导的场景 3. 基于范围的for循环&#x1f9e1;3.2 范围for的条件 4. nullptr指针&#x1f49a; 1. 内联函数❤️ 在C语言中有宏函数的概念&…

【嵌入式】Modbus实践

前言 最近接了一个项目&#xff0c;需要使用Modbus协议&#xff0c;虽然之前有所耳闻&#xff0c;但一直没有实操过&#xff0c;但实践之后发现其实还是很简单的&#xff0c;我认为它本质上就是对串口传输进行“二次封装”。 建议的入门顺序 大神带你秒懂Modbus通信协议——理…

【zotero】从知网万方维普WOS等数据库上导出格式引文-引文格式到zotero中

一、问题背景 最近新中特课要交课程论文作业了&#xff0c;老师说要有参考文献引注。 于是我找了很多参考文献&#xff0c;但是不打算放在我的zotero文献库中&#xff0c;因为我不想我的zotero文献库中包括与我专业学习不相关的东西。 鉴于导入文献后识别成引注后续导出打包…

iOS开发之Masonry框架源码深度解析

Masonry是iOS在控件布局中经常使用的一个轻量级框架&#xff0c;Masonry让NSLayoutConstraint使用起来更为简洁。Masonry简化了NSLayoutConstraint的使用方式&#xff0c;让我们可以以链式的方式为我们的控件指定约束。本篇博客的主题不是教你如何去使用Masonry框架的&#xff…

1992-2022年31省人均gdp/各省人均地区生产总值

1992-2022年31省人均gdp/各省人均地区生产总值 1、时间&#xff1a;1992-2022年 2、来源&#xff1a;国家统计J、各省NJ 3、范围&#xff1a;包括31省 4、缺失情况说明&#xff1a;无缺失 5、指标包括&#xff1a;各省人均GDP/省人均地区生产总值 6、指标解释&#xff1a…

sql注入(二)盲注,二次注入

目录 一、布尔盲注 1.判断库名的长度 2.判断数据库名 2.1判断数据库名首字符 2.2 判断数据库名的其余字符 二、时间盲注&#xff1a; 1.判断库名的长度 2.判断库名&#xff1a; 3.判断表名payload&#xff1a; 4.爆出列名 5.爆数据 三、二次注入 1.原理&#xff1a; …

Linux 常用操作技巧

Linux 操作技巧大全 Linux是一种强大的操作系统&#xff0c;掌握各种操作技巧可以帮助我们惬意地使用它。在这篇博客中&#xff0c;我们将分享一些实用的Linux技巧&#xff0c;希望能对您有所帮助&#xff01; 1. 使用Tab进行自动补全 在输入命令时&#xff0c;按下Tab键可…

漫谈大数据 - 数据湖认知篇

导语&#xff1a;数据湖是目前比较热的一个概念&#xff0c;许多企业都在构建或者准备构建自己的数据湖。但是在计划构建数据湖之前&#xff0c;搞清楚什么是数据湖&#xff0c;明确一个数据湖项目的基本组成&#xff0c;进而设计数据湖的基本架构&#xff0c;对于数据湖的构建…

Embarcadero Delphi 11 和 C++Builder 11 免费社区版发布!

Embarcadero为Delphi和CBuilder的最新11.3版本提供了社区版许可证。这是Delphi或CBuilder的免费版本&#xff0c;适用于学生&#xff0c;业余爱好者和初创公司&#xff08;因为许可证仅对于收入有限的公司或个人&#xff09;。 什么是CE社区版&#xff1f; Delphi 和 CBuilde…

【Git 入门教程】第七节、Git 远程仓库(Github)

GitHub是一个基于Git的代码托管平台&#xff0c;它是全球最大的开源软件社区之一。GitHub允许开发者在上面创建和托管他们的Git仓库&#xff0c;并与其他开发者进行协作。 GitHub是一个非常流行的Git工具&#xff0c;它是开源社区的重要组成部分&#xff0c;并支持许多著名的开…

【MySQL】交叉连接、自然连接和内连接查询

一、引入 实际开发中往往需要针对两张甚至更多张数据表进行操作&#xff0c;而这多张表之间需要使用主键和外键关联在一起&#xff0c;然后使用连接查询来查询多张表中满足要求的数据记录。一条SQL语句查询多个表&#xff0c;得到一个结果&#xff0c;包含多个表的数据。效率高…

测试人员的启蒙指南

文章目录 一. 了解测试1. 生活中的测试场景2. 什么是软件测试3. 实战练习 二. 软件测试和软件开发的区别三. 软件测试和软件调试的区别四. 软件测试的发展五. 软件测试的岗位六. 一个优秀的软件测试人员具备的素质 本篇中介绍测试人员是干什么的, 起到启蒙和了解的作用, 重点是…