目录

序言

快速上手kettle开篇中,我们将kettle比作壶,并对这个壶做了简单介绍。

而上一期中我们实现了①将csv文件通过kettle转换成excel文件;

②将excel文件通过kettle写入到MySQL数据库表中 这两个案例。

相信大家跟我一样,对kettle已经有了初步认识,并且对这强大的工具产生了兴趣。

今天这小节,我们来看看kettle 这“壶”里面到底能放些啥东西?

一 、kettle这壶能装些啥

启动kettle,在转换-->输入下面有很多东西,如下截图。有图可以看出这kettle“真能装”。

可以把各种五花八门的数据丢到这壶里,kettle也是来者不拒。我们日常能用到的数据基本都能往里面塞。

--kettle能装的东西 --kettle能装的东西

一眼望去,能看到不少“大熟人”,Access输入CSV文件输入Excel输入JSON输入XML输入文本文件输入YAML输入表输入等等

不知道你对上面提到的“大熟人”了不了解,其实不了解也没关系。

在后面的模块中,会把这些“大熟人”分别介绍给你。并且保证你过目不忘,再次遇到就能“称兄道弟”

二、Access输入

Access是微软公司开发的一个数据库管理软件.它像个保险柜,可以帮你存储和管理各种各样的数据。

Access是我们平常会用到数据库,接下来我们就新建一个Access数据库为例,来简单说一说怎么使用Access这个输入控件

2.1 准备Acess数据库和表

新建一个access数据库,并建一个云襄传的表,然后往里面添加一些数据

2.2 新建一个转换并设置

--①将Access输入控件拖入工作区 --②选择2.1新建的云襄传.accdb
--③添加文件 --④ 选择数据库中数据表
--④ 获取字段 --⑤ 预览数据

2.3 启动转换预览数据

--①启动转换 --②预览数据

注: 启动执行转换后,Preview date tab页面如果加载出数据说明输入控件配置是成功的

三、CSV文件输入

CSV文件是一个用逗号分隔的固定格式的文本文件,这种文件后缀名为.csv,可以用Excel或者文本编辑器打开。

在日常工作中,我们经常会需要将CSV文件转换为其他格式的数据

3.1 准备csv文件,并将csv输入控件拖入工作区

3.2 csv输入控件设置

3.3 预览csv文件内容

可以在设置界面点击【预览】 按钮查看csv数据,也可以启动步骤预览数据、

-- 预览按钮预览数据 --启动步骤预览csv文件

四、文本文件输入

我们经常需要将服务器上的日志文件(文本文件)数据或者其他文本数据提取出来,然后放到excel,这样查看起来就很方便

4.1 准备txt格式文本文件,并将控件拖入工作区

4.2 文本输入控件设置

--①选择txt文本文件 --②预览文件内容
--③设置分割符 --④ 获取字段

4.3 启动步骤,浏览数据

五、Excel输入

excel 对于我们来说并不陌生,时我们平常接触到最多的文件格式

5.1 准备excel文件,并将控件拖入工作区

5.2 Excel控件设置

--① 选择excel文件 --② 获取工作表名称
-- ③ 获取字段,并设置数据格式 --④ 预览数据

5.3 启动转换,预览数据

上一步【预览记录】 如果有数据显示出来,基本上excel设置时成功的了

当然我们可以启动转换,然后预览excel文件中的数据

六 、json文件输入

json 可以算是现在市面上用的比较多的数据结构了,是JavaScript对象,是一种轻量级的数据交换格式。

可以很方便的在不同语言之间传递

6.1 json基本组成

  • 对象:{ }
  • 数组:[ ]
  • 属性:key:value

6.2 JSON Path

JSON Path 用来定位json节点数据

Json Path 包含两种写法

  • 点记法:$.store.book[0].title

  • 括号记法:$ [ ‘ store ’ ] [ ‘ book ’ ] [ 0 ] [ ‘title’ ]

使用过程中一些常用符号 含义

--符号 --描述
$ 查询根节点对象,用于表示一个json数据,可以数组或对象
@ 表示当前节点对象,类似于Java中的this对象
* 可以表示一个数字或字符
'' 类似于递归搜索
.<name> 表示一个子节点
['<name>'(,'<name>')] 表示一个或多个子节点
[<number>(,<number>)] 表示一个或多个数组下标
[start:end] 数组片段,区间为(start,end) 不包含end
[?(<expression>)] 过滤器表达式,结果为Boolean类型

上面说了一些常用符号的使用,我们就以实际的json为例,来看看json里的节点怎么取

{
"data":{
"longSeason":[
{ "actor":"范伟",
"role":"王响",
"sex":"男",
"age":56
},
{ "actor":"秦昊",
"role":"龚彪",
"sex":"男",
"age":40
},
{ "actor":"李庚希",
"role":"沈默",
"sex":"女",
"age":18
},
{ "actor":"陈明昊",
"role":"马德胜",
"sex":"男",
"age":55
}
],
"surname":[
{ "actor":"陈晓",
"role":"云襄",
"sex":"男",
"age":28
},
{ "actor":"毛晓彤",
"role":"舒亚男",
"sex":"女",
"age":18
},
{ "actor":"许龄月",
"role":"柯梦兰",
"sex":"女",
"age":18
},
{
"actor":"刘冠麟",
"role":"金十两",
"sex":"男",
"age":35 },
{ "actor":"唐晓天",
"role":"苏鸣玉",
"sex":"男",
"age":25
} ]
} }
--取出漫长季节中所有演员 --结果
$.data.longSeason[*].actor ["范伟","秦昊","李庚希","陈明昊"]
$..longSeason..actor ["范伟","秦昊","李庚希","陈明昊"]

6.3 实践操作

6.3.1 准备json文件,并将json input控件拖入工作区

6.3.2 JSON 控件设置
--① 选择json文件并添加 --② 选择字段
-- ③ 查看表达式 -- ④ 预览节点数据
6.3.3 启动转换,预览数据

七、xml 输入

xml是一种可扩展标记语言,XML 和上面说的json一样用来传输和存储数据

7.1 准备xml文件

我们后面的演示都用下面的xml为例子

<data>
<longSeason>
<actor>范伟</actor>
<role>王响</role>
<sex>男</sex>
<age>56</age>
</longSeason>
<longSeason>
<actor>秦昊</actor>
<role>龚彪</role>
<sex>男</sex>
<age>40</age>
</longSeason>
<longSeason>
<actor>李庚希</actor>
<role>沈默</role>
<sex>女</sex>
<age>18</age>
</longSeason>
<longSeason>
<actor>陈明昊</actor>
<role>马德胜</role>
<sex>男</sex>
<age>55</age>
</longSeason>
<surname>
<actor>陈晓</actor>
<role>云襄</role>
<sex>男</sex>
<age>28</age>
</surname>
<surname>
<actor>毛晓彤</actor>
<role>舒亚男</role>
<sex>女</sex>
<age>18</age>
</surname>
<surname>
<actor>许龄月</actor>
<role>柯梦兰</role>
<sex>女</sex>
<age>18</age>
</surname>
<surname>
<actor>刘冠麟</actor>
<role>金十两</role>
<sex>男</sex>
<age>35</age>
</surname>
<surname>
<actor>唐晓天</actor>
<role>苏鸣玉</role>
<sex>男</sex>
<age>25</age>
</surname>
</data>

7.2 XPath

在说json输入控件中,我么介绍了JSON Path, 这里是xml输入控件,也有类似XPath 来定位xml中节点的位置

--表达式 --描述
nodename 选取此节点的所有节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 属性
--取出漫长季节中所有演员 --结果
/data/longSeason/actor ["范伟","秦昊","李庚希","陈明昊"]

7.3 实践操作

7.3.1 将xml输入控件拖入工作区

7.3.2 xml控件设置
--① 选择xml文件并添加 -- ② 获取xml文档读取路径
-- ③ 获取字段 -- ④ 预览
7.3.3 启动转换,预览数据

八、表输入

由于涉及到数据库表相关操作,所以我们新建转换之后需要先建立DB连接。

建立DB连接的方式我们在上一小节小试牛刀中已经提过,这里就不展开了。我们还是以MySQL为例子来说表输入。

8.1 将表输入控件拖入工作区

8.2 表输入控件设置

-- ①获取SQL查询语句 -- ② 点击【预览】按钮预览表数据

8.3 启动转换,预览表数据

九、 生成记录

在日常工作中我们经常需要批量造一些测试数据,通过生成记录这个输入控件就可以完成。

9.1 将生成记录控件拖入工作区

9.2 生成记录控件设置

-- ① 填写需要数据的相关信息 -- ② 预览生成的数据

9.3 启动转换,预览数据

到此,10条测试数据就造好了

十、小结

本篇文章我们主要是说了九个kettle的常用输入控件(kettle壶里能放写啥东西进去)。

kettle的输入控件就代表着kettle能处理一些什么格式的数据,其实它还有其他输入控件,这里就不一一例举了。

大家如果感兴趣,可以将输入下面的每个控件都去试试。

本期内容到此就结束了,希望对你有所帮助。

这一期说了输入控件,那下一期就到了输出控件

我们下一期再见 (●'◡'●)

快速上手kettle(三)壶中可以放些啥?的更多相关文章

  1. 如何快速上手一个新技术之vue学习经验

    碰到紧急项目挪别人的vue项目过来直接改,但是vue是18年初看过一遍,18年底再来用,早就忘到九霄云外了,结果丢脸的从打开vue开始学,虽然之前在有道云笔记做了很多记录,然后没有系统整理.所以借这次 ...

  2. C/ C++ 快速上手

    C++ 快速上手 (一)https://www.cnblogs.com/cosmo89929/archive/2012/12/22/2828745.html C++ 快速上手 (二)https://w ...

  3. UnityShader快速上手指南(三)

    简介 这一篇还是一些基本的shader操作:裁剪.透明和法向量的应用 (纠结了很久写不写这些,因为代码很简单,主要是些概念上的东西) 先来看下大概的效果图:(从左到右依次是裁剪,透明,加了法向量的透明 ...

  4. EF Core 快速上手——EF Core的三种主要关系类型

    系列文章 EF Core 快速上手--EF Core 入门 本节导航 三种数据库关系类型建模 Migration方式创建和习修改数据库 定义和创建应用DbContext 将复杂查询拆分为子查询   本 ...

  5. 三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署

    本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 前文:三分钟快速上手TensorFlow 2.0 (上)——前置基础.模型建立与可视化 tf.train. ...

  6. 三分钟快速上手TensorFlow 2.0 (上)——前置基础、模型建立与可视化

    本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 学习笔记类似提纲,具体细节参照上文链接 一些前置的基础 随机数 tf.random uniform(sha ...

  7. 快速上手Linux核心命令(三):文件和目录操作命令

    @ 目录 前言 cd 切换目录 pwd 显示当前路径 ls 显示目录下内容及相关属性信息 mkdir 创建目录 tree 以树形结构显示目录下的内容 touch 创建空白文件或改变文件的时间戳属性 c ...

  8. 从零开始学 Web 之 Ajax(三)Ajax 概述,快速上手

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  9. 三分钟快速上手TensorFlow 2.0 (下)——模型的部署 、大规模训练、加速

    前文:三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署 TensorFlow 模型导出 使用 SavedModel 完整导出模型 不仅包含参数的权值,还包含计算的流程(即计算 ...

  10. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

随机推荐

  1. linq小结

    普通查询 var query = from s in context.Student select s; //投影列 var query = from s in context.Student sel ...

  2. Gateway 网关

    Spring Cloud Gateway 作为 Spring Cloud框架的第二代网关,在功能上要比 Zuul更加的强大,性能也更好.随着 Spring Cloud的版本迭代,Spring Clou ...

  3. QGIS 导入文本数据(WKT)

    在做GIS数据处理的时候,经常会遇到原始数据是 text.csv.Excel 等格式的数据.要使用数据前提是要先转换数据. 这里是介绍用 QGIS 导入数据.打开导入方式如下(根据自己的文本类型选择不 ...

  4. ffmpeg protocol concat 进行ts流合并视频的时间戳计算及其音画同步方式一点浅析

    ffmpeg protocol concat 进行ts流合并视频的时间戳计算及音画同步方式一点浅析 目录 ffmpeg protocol concat 进行ts流合并视频的时间戳计算及音画同步方式一点 ...

  5. C++的一些随笔(第一篇)

    C++中 ->的作用 ->用于指针 ->用于指向结构体的指针 ->用于指向结构体的指针,表示结构体内的元素  #include<stdio.h> struct ro ...

  6. R语言数据加工厂——plyr包使用

    plyr包是Hadley Wickham大神为解决split – apply – combine问题而写的一个包,其动机在与提供超越for循环和内置的apply函数族的一个一揽子解决方案.使用plyr ...

  7. Laplace分布算子开发经验分享

    摘要:Laplace 用于 Laplace 分布的概率统计与随机采样. 本文分享自华为云社区<Laplace分布算子开发经验分享>,作者:李长安. 1.任务解析 详细描述: Laplace ...

  8. [Linux]常用命令之【history】#查看历史操作#

    1 历史记录: history history命令就是历史记录. 它显示了在终端中所执行过的所有命令的历史. history //显示终端执行过的命令 history 10 //显示最近10条终端执行 ...

  9. [Spring MVC]@RequestMapping 与 @RequestMapping+@RequestResponse的区别

    假定:返回格式均为JSON,JSON实体对象myJson的属性有:data.message.code.status. 二者的区别在于: @RequestMapping:会在最外层包裹 data属性,将 ...

  10. linux 给lvm磁盘扩容

    目录 linux 给lvm磁盘扩容 扩容步骤 确认可用空间 创建新的物理卷 将物理卷添加到现有的卷组中 扩展逻辑卷 linux 给lvm磁盘扩容 早上到公司发现磁盘满了,挂载点是一个lvm 跟领导确认 ...