kettle案例三抽取json数据保存到mongodb

编程入门 行业动态 更新时间:2024-10-26 14:39:15

kettle<a href=https://www.elefans.com/category/jswz/34/1770649.html style=案例三抽取json数据保存到mongodb"/>

kettle案例三抽取json数据保存到mongodb

如需转载请标明出处:直到世界的尽头-张小凡-

普通json结构抽取

有简单的json结构如下:
{
“id”: “0001”,
“name”: “Joe”,
“age”: 88
}
保存在test.json文件中。
我们使用kettle来尝试json输入进行解析保存到mongodb。
构造转换流程如下:
Json Input到字段选择到mongodb Output

配置json输入

左键点击Json input,在文件栏 点击浏览 选中test.json,点击增加。

点击字段,输入需要获取的字段和路径。
因为json输入不能自动获取字段,所以路径需要我们自己填写。
填写路径前需要了解几个符号。

$号表示根元素
.表示子操作
[]表示数组操作
[,]表示路径操作

输入如图:

路径为
.id . i d .name
.age . a g e .name 表示根目录子集的name,如果是两层则可以$..name表示根目录子集的子集。

预览可查看到结果

因为字段选择和mongodb输出之前都有讲过,这里就不详细解说了。

清洗Json输入的关键在于了解和构造路径。

有限嵌套json结构抽取

json一般来说不会只有一层,基本上都会有嵌套。
我们现在来看看2层嵌套的情况。
有json结构如下:
{
“id”: “0001”,
“name”: “Joe”,
“age”: 88,
“children”: [
{
“id”: “0002”,
“name”: “Jay”,
“age”: 52
}
]
}
保存在test2.json中。
则在字段获取时输入路径为

.id . i d .name
.age . a g e .children
则预览时如图:

我们可以看到 children的元素已经被装在children字段中了,这里我们为了解析第二层children,需要再增加一个Json输入。

在第二个Json输入的文件配置时 勾选 源定义在一个字段里,选择children字段。

解析第二层数据的字段配置如下:

路径为:
.[∗]id . [ ∗ ] i d .[*]name
.[∗]age . [ ∗ ] a g e .[*]children
$.[*]name含义为根元素的子集数组的name。
*表示所有,也就是 数组中如果有多个{}元素都会获取到name。

因为字段当作源时不能直接预览,所以可以先填写MongoDB Output和在字段选择中获取字段,删除children字段,然后在解析第二层数据右键Preview一下。

结果如图:

这样就完成了两层树的解析。

但是这样的弊端很多,有x层就需要json输入处理x次,还需要分列才能存储。

经过思考 我们有个更好的方法用来解决嵌套json的抽取问题:未知层数嵌套json结构抽取。

未知层数嵌套json结构抽取-使用脚本进行递归

我们在已知层数抽取中已经知道*号能够自动获取数组中所有的数组中的元素,而且能够嵌套获取。
那我们能不能把json构造在数组来处理。
比如我们有json结构如下:
{
“id”: “0001”,
“name”: “Joe”,
“age”: 88,
“children”: [
{
“id”: “0002”,
“name”: “Jay”,
“age”: 52,
“children”: [
{
“id”: “0003”,
“name”: “zoe”,
“age”: 23,
“children”: []
}
]
}
]
}

存放在test3.json中。
我们都知道 kettle是支持使用脚本的,包括java和javascript等语言。
我们可以选取熟悉的语言来进行操作。
具体操作流程可以参考:
kettle案例四使用java脚本进行数据处理

如需转载请标明出处:直到世界的尽头-张小凡-

更多推荐

kettle案例三抽取json数据保存到mongodb

本文发布于:2024-03-08 20:37:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1722252.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:案例   数据   kettle   mongodb   json

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!