Kettle读取接口数据到数据表-Http控件的使用
一、创建一个转换
点击右上角文件,选择新建,再选择转换即可创建一个转换。
新建转换后菜单如下:
之后的操作都是基于这个转换中的核心对象来操作。
二、 所用到的核心对象
-
输入菜单下的
生成记录
-
查询菜单下的
HTTP client
- 这个核心对象和同级的
Http post
、REST client
使用原理都是差不多的,可以融汇贯通
- 这个核心对象和同级的
-
输入菜单下的
JSON input
-
输出菜单下的
表输出
- 不一定是用表输出,使用
插入/更新
控件也可以实现类似的效果
- 不一定是用表输出,使用
三、控件摆放方式如下
四、配置DB连接
4.1 切换到主对象树下,鼠标右击转换菜单下的DB连接
,选择新建:
4.2 配置一个MySql连接:
4.3 配置好后选择确定,就能看到当前转换下的一个DB连接:
五、配置生成记录核心对象
主要是配置接口地址:
http://localhost:8899/test/list
给这个地址起了个名称api
,后面的核心对象控件就能够使用api
来作为接口路径。
注意:
这里有个限制配置,写几后面的HTTP client就会查几次
六、配置HTTP client核心对象
勾选从字段中获取url
。
url
字段名处就可以在下拉框中选择到上一个核心对象控件配置的api
。
最后设置结果字段名即可。这个结果字段名,直接决定了下一个控件获取结果时使用的名称。
七、配置JSON input核心对象
使用HTTP client
控件从接口读取到数据以后。
需要使用JSON input
核心对象来解析,把查询结果转换为JSON
。
7.1 配置JSON input
核心对象数据来源
勾选源定义在一个字段里。
从字段源获取处就可以在下拉框中选择到上一个核心对象控件配置的result
字段。
7.2 配置字段映射
这里可以选择需要得到HTTP client
核心对象控件获取到的哪些数据。
配置的名称,就是要输入到下一个核心对象中的数据名称。
7.3 JSONPath操作符详解
路径那一段的写法可能很多人不知道什么意思。
其实这里用的是JSONPath
操作符。它的作用是定位到复杂结果集中的具体字段。
7.3.1 JSONPath常见操作符
操作符名称 | 说明 |
---|---|
$ | 查询的根节点对象,用于表示一个json数据,可以是数组或对象 |
… | 可以理解为递归搜索 |
.name | 表示一个子节点 |
@ | 过滤器断言(filter predicate)处理的当前节点对象,类似于java中的this字段 |
* | 通配符,可以表示一个名字或数字 |
[start:end] | 数组片段,区间为[start,end],不包含end |
7.3.2 具体使用方式
比如有如下复杂结果集:
{
"code": 200,
"msg": "查询成功",
"data": [
{
"name":"zs",
"age":"18",
},
{
"name":"ls",
"age":"25",
}
]
}
如果想要把data
下面的name
字段映射到自己配置的name
处,可以这么写JSONPath
。
$.data..name
意思就是获取根节点下的data
字段,再去data
中递归搜索name
字段。
$
、.
、..
这三个也是最常用的三个操作符,足以应付大部分情况。
八、配置表输出核心对象
8.1 配置表输出位置
配置好数据库连接,也就是从配置的DB
连接中选一个,没有配置DB连接则没有选择。
然后再勾选批量插入,这样可以插入多条数据。
8.2 表输出数据库字段配置
点击数据库切换按钮,开始配置数据库字段和流字段的映射关系。
流字段就是上一个控件的输入结果,这个结果是以流的方式来传输,所以又叫流字段。
表字段就是数据库对应表中的列名称。
这里可以手动输入,也可以点击获取字段,然后自行查看有没有问题,再酌情修改。
九、 运行转换
执行成功后数据库中就已经有了如下字段:
这样就完成了从Http
接口中读取数据。
相似的HTTP post
、REST client
核心对象控件用法也是相似。
所有步骤都一样,只要把HTTP get
控件替换为HTTP post
和REST client
即可。
十、拓展–插入/更新核心对象控件的使用
这个核心对象的意思就是如果数据库表中有数据的话就更新,没有的话就删除。
它可以替代上面步骤中的表输出核心对象控件。
和表输出核心对象控件不同的是,这里需要配置一个用来查询的关键字。
这个关键字,决定了哪些数据做更新操作,哪些数据做删除操作。
表里某条数据的id
和流数据中的id
有相同的话,就按把流中的数据更新上去。反之则直接插入。
十一、拓展–删除控件的使用
删除核心对象控件在输出菜单中,因此是需要有东西输入的。
这个输入的数据需要有一个输入核心对象控件获取到要删除的数据,再把数据用流的方式传给删除核心对象控件。
11.1 控件准备
这里使用表输入核心对象控件来获取要删除的数据。
再把要删除的数据以流的方式传给删除控件。
11.2 表输入核心对象的配置
选择已经配置好的数据库连接。再点击获取SQL
语句,选择需要获取语句的表,就会自动生成查询该表的SQL
语句。
点击预览,能够查到数据的话,再点击确定保存数据。
注意:
当不想删除表里任何数据,只想做数据的更新或者插入时,可以使用。
11.3 删除核心对象的配置
配置好数据库连接,要删除数据的目标表。
最后配置通过什么字段去删除。
上图的意思就是根据流中数据的id
值去删除目标表中id
和流中数据的id
相同的数据.
注意:
预览,能够查到数据的话,再点击确定保存数据。
注意:
当不想删除表里任何数据,只想做数据的更新或者插入时,可以使用。