当前位置: 首页 > article >正文

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

一、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.kler.cn/a/16602.html

相关文章:

  • 数据集标注txt文件读取小工具
  • ❤React-React 组件通讯
  • 常用的Anaconda Prompt命令行指令
  • 物理设备命名规则(Linux网络服务器 15)
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码原理.编码相关api
  • 笔记 | image may have poor performance,or fail,if run via emulation
  • MyBatisPlus代码生成器使用
  • Linux Ansible角色介绍
  • Python使用AI animegan2-pytorch制作属于你的漫画头像/风景图片
  • 3.3 泰勒公式例题分析
  • c++ 11标准模板(STL) std::vector (三)
  • 同时使用注解和 xml 的方式引用 dubbo 服务产生的异常问题排查实战
  • 抓马,互联网惊现AI鬼城:上万个AI发帖聊天,互相嗨聊,人类被禁言
  • ASIC-WORLD Verilog(6)运算符
  • 【.net core 自动生成数据库】
  • 认识Cookie和Session
  • 【算法】求最短路径算法
  • react之按钮鉴权
  • Java微服务商城高并发秒杀项目--013.SentinelResource的使用
  • 算法刷题|392.判断子序列、115.不同的子序列
  • 大型医院影像PACS系统三维重建技术(获取数据、预处理、配准、重建和可视化)
  • Stable Diffusion 本地部署教程不完全指南
  • 第18章 项目风险管理
  • javascript中的严格模式
  • 自动驾驶行业观察之2023上海车展-----车企发展趋势(1)
  • Python基础合集 练习19(类与对象3(多态))