2

快速上手kettle(三)壶中可以放些啥? - xiezhr

 1 year ago
source link: https://www.cnblogs.com/xiezhr/p/17455831.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

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

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

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

一 、kettle这壶能装些啥

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

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

--kettle能装的东西 --kettle能装的东西
输入1 输入2

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

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

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

二、Access输入

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

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

2.1 准备Acess数据库和表

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

2.2 新建一个转换并设置

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

2.3 启动转换预览数据

--①启动转换 --②预览数据
image-20230529232957930 image-20230529233131829

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

三、CSV文件输入

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

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

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

csv输入控件

3.2 csv输入控件设置

csv文件输入设置

3.3 预览csv文件内容

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

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

四、文本文件输入

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

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

拖入工作区

4.2 文本输入控件设置

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

4.3 启动步骤,浏览数据

启动步骤

五、Excel输入

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

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

拖入控件

5.2 Excel控件设置

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

5.3 启动转换,预览数据

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

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

image-20230531223637622

六 、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文件并添加 --② 选择字段
选择并添加 image-20230601224550176
-- ③ 查看表达式 -- ④ 预览节点数据
image-20230601224803349 image-20230601224938534
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输入控件拖入工作区
image-20230601232215755
7.3.2 xml控件设置
--① 选择xml文件并添加 -- ② 获取xml文档读取路径
添加文件 读取循环路径
-- ③ 获取字段 -- ④ 预览
获取字段 预览
7.3.3 启动转换,预览数据
image-20230601233132670

八、表输入

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

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

DB连接

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

image-20230603080323531

8.2 表输入控件设置

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

8.3 启动转换,预览表数据

预览表数据

九、 生成记录

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

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

生成记录拖入工作区

9.2 生成记录控件设置

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

9.3 启动转换,预览数据

启动转换预览数据

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

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

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

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK