通过Kettle工具解析Json接口数据并且保存到数据库中的详细操作

article/2025/10/27 23:00:19

       最近接到一个业务需求,要把一个Json接口数据获取下来并且保存到数据库中,考虑到应用代码实现功能需要耗费一定时间和精力,一旦需要修改,就得重启项目等。于是就选择利用Kettle工具来实现这个业务功能,将其从项目源码中分离为一个独立的功能模块,它的整体设计结构图如下:
在这里插入图片描述
说明:
生成记录:用于生成接口链接转化为一个文本字段,提供给所有步骤进行使用;
REST client:用于获取接口数据,形成一个Json文档结果集,并且在之后的步骤进行使用;
JSON input:用于解析json文档结果集,将json数据拆分成一个一个单独的字段;
表输出:用于将数据集的内容保存到数据库中;
JSON output:用于输出Json文档结果集,并且形成一个json或者txt等格式的文档;

       上述图的“JSON output”步骤为额外步骤,主要是用于测试该模型是否能获取到接口数据,并且将数据进行正确地解析最后再利用。如果读者有添加到该步骤,可以用鼠标点击这个步骤的连线,将其变为灰色就不会执行该步骤。下面开始详细分析:

(一)获取接口链接的数据集
在这里插入图片描述
①生成记录:在kettle工具的输入->生成记录进行创建的,其具体填写内容如下:
在这里插入图片描述
在这里插入图片描述

说明
限制:此处设置为1,是为了避免同一条链接会生成多个url结果,导致最终输出的结果有大量重复数据;
字段:将想要解析的接口链接填写到第一栏,并且填写任意名称(只要能标识当前接口链接即可);

②REST client:它在kettle工具的查询->REST client进行创建:,其具体填写内容如下:
在这里插入图片描述
在这里插入图片描述
说明
       按照图中勾选Accept URL from field,然后在URL field name中选择“生成记录”步骤所创建的字段“url”,默认请求方式为GET,并且设置结果集的名称为“result”。

       值得注意的是 ,参照网上很多例子,大部分文章写的都是没有“生成记录”这个步骤,而是直接是创建“REST client”步骤获取接口数据,其填写内容如下:
在这里插入图片描述
在这里插入图片描述

       即将接口链接直接放到“REST client”步骤进行获取,笔者亲测发现一直获取不到接口数据,这个有可能跟kettle版本有关,此处一笔带过,不具体分析。

(二)解析Json数据
在这里插入图片描述
       解析Json数据主要是用到“JSON input”这个步骤,该步骤是在输入->JSON input进行创建的:
在这里插入图片描述
       当然,在编写该步骤之前,我们首先得知道这个接口链接所得到的的Json数据是什么格式,我们需要拿到这个接口的什么数据,本文的接口数据如下所示:
在这里插入图片描述
       通过上图的数据格式,我需要拿到的数据是接口数据里面data的结果集,于是“JSON output”步骤里面要填写的内容如下:
在这里插入图片描述
在这里插入图片描述

说明
       第一步,首先按照图示勾选“元定义在一个字段里”,然后在下方选择“REST client”步骤所定义的Json文档结果集。第二步,在“字段”这个窗口填写需要解析的字段内容,此处需要注意的是路径的填写,使用:

$..result

来获取json文档结果集。从本文的接口图可以看到,我们需要获取结果集的data属性,并且遍历data属性里面的数组对象数据,因此使用:

$..result.data[*]

最后再通过:

$..result.data[*].level

的方式获取遍历对象里面的属性值。

(三)保存到数据库
在这里插入图片描述
该步骤是在输出->表输出中进行创建的:
在这里插入图片描述
其填写内容如下所示:
       首先点击“新建”,找到需要保存的数据库类型,填写相关的数据库连接信息,然后测试一下数据库连接是否正常。如果为正常,则点击确认,继续操作下一步。
在这里插入图片描述
在这里插入图片描述
       接下来选择目标表,并且将数据库表字段如下图所示:
在这里插入图片描述
在这里插入图片描述
       最后,点击运行即可。

       假如获取的数据为空,请检查一下接口是否请求正常是否需要设置Cookie或者token值、"JSON input"步骤填写的变量是否正确等,具体设置参数可以在“生成记录”步骤添加参数,然后在“REST client”步骤中的相关位置添加就行:如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/4y5BtVeW.shtml

相关文章

树莓派安装wiringpi显示不存在解决方法

环境:树莓派4B 使用sudo apt-get install wiringpi 指令安装wiringpi包时,出现下面的提示: Reading package lists... Done Building dependency tree... Done Reading state information... Done Package wiringpi is not available, but …

[ARM+Linux] 基于wiringPi库的串口通信

wiringOP-master/examples/serialTest.c中&#xff0c;wiringPi库中自带的串口程序&#xff1a; #include <stdio.h> #include <string.h> #include <errno.h>#include <wiringPi.h> #include <wiringSerial.h>int main () {int fd ;int count …

树莓派 Raspberry Pi —— wiringPi库安装

树莓派的GPIO可以像单片机&#xff08;51单片机&#xff0c;Arduino&#xff0c;STM32等&#xff09;一样进行IO控制&#xff08;输出高、低电平&#xff0c;IIC&#xff0c;SPI&#xff0c;串口通信&#xff0c;PWM输出等&#xff09;&#xff0c;在此使用常用的WiringPi库来进…

树莓派 wiringPi 库

wiringPi是一个很棒的树莓派IO控制库&#xff0c;使用C语言开发&#xff0c;提供了丰富的接口&#xff1a;GPIO控制&#xff0c;中断&#xff0c;多线程&#xff0c;等等 检查树莓派是否已安装 wiringPi&#xff0c;在树莓派终端输入&#xff1a; gpio -v // 会在终端中输出…

树莓派安装wiringPi

在学习微雪的2-CH CAN FD HAT时&#xff0c;根据官网步骤在树莓派安装wiringPi sudo apt-get install wiringpi #对于树莓派4B可能需要进行升级&#xff1a; wget https://project-downloads.drogon.net/wiringpi-latest.deb&#xff08;此链接安装可能出错&#xff0c;如果出…

解决wiringPi库与64位树莓派之间不兼容的问题

目录 一.问题现象&#xff1a; 二.解决方案&#xff08;网站&#xff09;可以直接点这下载 一.问题现象&#xff1a; 今天在练习wiringPi库的使用时候&#xff0c;在最后编译的时候出现了这个问题 主要问题是这个skipping incompatible&#xff01; skipping incompatible. …

树莓派安装WiringPi以及找不到wiringPi.h文件解决方法(图文教程)

目录 安装WiringPi 失败的过程&#xff1a; 选择的方法&#xff1a; 安装步骤&#xff1a; 找不到wiringPi.h文件解决方法 失败过程&#xff1a; 解决方法&#xff1a; 安装WiringPi 失败的过程&#xff1a; 通过分别使用sudo apt-get install wiringPi 和 wget https…

树莓派的wiringPi库

一、wiringPi库 树莓派的外设开发都是基于wiringPi库&#xff0c;wiringPi是树莓派IO控制库&#xff0c;使用C语言开发&#xff0c;提供了丰富的接口&#xff1a;GPIO控制&#xff0c;中断&#xff0c;多线程&#xff0c;等等。 wiringPi库的安装 进入 wiringPi的github (htt…

玩转树莓派三、树莓派安装GPIO库接口wiringpi

WiringPi简介 WiringPi 是由 Gordon Henderson 使用 C 语言编写的一个基于 PIN接口的 GPIO 控制函数库&#xff0c;适用于所有Raspberry Pi 中使用的 BCM2835、BCM2836 和 BCM2837 SoC 设备&#xff0c;使用过 Arduino 控制板的开发人员应该会对此非常熟悉。 wiringPi 包括一…

树莓派学习笔记——wiringPi I2C设备使用详解

1.前言 最近认真学习了树莓派&#xff0c;从浅到深认真分析了wiringPi实现代码&#xff0c;借助树莓派学习linux收获颇丰。深入学习linux一段时间后发现它非常有魅力&#xff0c;一个简单的IO口输出操作尽有那么多的“玩法”。wiringPi是一个简单易用的函数库&#xff0c;通过w…

wiringPi简介、安装和管脚说明,官方document

https://www.cnblogs.com/lulipro/p/5992172.html WiringPi API 教程 https://www.rubydoc.info/gems/wiringpi2/2.0.1/WiringPi/GPIO 硬件初始化函数 使用wiringPi时&#xff0c;你必须在执行任何操作前初始化树莓派&#xff0c;否则程序不能正常工作。 可以调用下表函数…

树莓派4B-WiringPi库的安装和使用 (C和Python版)

本文适合&#xff1a;掌握一定的linux常用基本命令&#xff0c;有C或Python编程基础的读者。 有很多入坑树莓派的新手会Python或者C语言&#xff0c;想玩转树莓派上的GPIO硬件资源&#xff0c;但是又不知道从何下手&#xff0c;本文就是一篇让新手入门树莓派GPIO硬件编程的文章…

(转)树莓派wiringPi库详解

https://www.cnblogs.com/lulipro/p/5992172.html <div id"post_detail">树莓派wiringPi库详解 wiringPi是一个很棒的树莓派IO控制库&#xff0c;使用C语言开发&#xff0c;提供了丰富的接口&#xff1a;GPIO控制&#xff0c;中断&#xff0c;多线程&#xf…

树莓派学习笔记——wiringPi GPIO使用详解

1.前言 最近认真学习了树莓派&#xff0c;从浅到深认真分析了wiringPi实现代码&#xff0c;借助树莓派学习linux收获颇丰。深入学习linux一段时间后发现它非常有魅力&#xff0c;一个简单的IO口输出操作尽有那么多的“玩法”。wiringPi是一个简单易用的函数库&#xff0c;通过w…

树莓派在下载Wiringpi时遇到的问题1.软件包 wiringpi 没有可安装候选2.失败:域名解析暂时失败。 wget: 无法解析主机地址 “project-downloads.drogon.ne

项目场景&#xff1a; 最近无聊,在玩实验室的树莓派,在装Wringpi时遇到了一些问题,记录一下 错误1 我用的是树莓派4B,在sudo apt-get install wiringpi时报了如下错误: 正在读取软件包列表… 完成 正在分析软件包的依赖关系树… 完成 正在读取状态信息… 完成 没有可用的软件…

树莓派学习笔记——wiringPi简介、安装和管脚说明

1.WiringPi简介 WiringPi是应用于树莓派平台的GPIO控制库函数&#xff0c;WiringPi遵守GUN Lv3。wiringPi使用C或者C开发并且可以被其他语言包转&#xff0c;例如python、ruby或者PHP等。WiringPi中的函数类似于Arduino的wiring系统&#xff0c;这使得熟悉arduino的用户使用wri…

WiringPi介绍及安装方法

WiringPi介绍及安装方法 1.WiringPi简介 WiringPi是应用于树莓派平台的GPIO控制库函数&#xff0c;WiringPi遵守GUN Lv3。wiringPi使用C或者C开发并且可以被其他语言包转&#xff0c;例如python、ruby或者PHP等。WiringPi中的函数类似于Arduino的wiring系统&#xff0c;这使得…

树莓派wiringPi库详解

达者为先 师者之意 树莓派wiringPi库详解 1 WiringPi安装2 wiringPi库编译和运行3 wiringPi库API大全3.1 硬件初始化函数3.2 通用GPIO控制函数3.3 时间控制函数3.4 中断3.5 多线程3.6 softPwm软件实现的PWM3.7 串口通信3.8 shift移位寄存器芯片API3.9 树莓派硬件平台特有的API…

第七课:树莓派WiringPi库

目录 一、WiringPi库介绍 二、WiringPi安装 方法一&#xff1a; 安装git工具&#xff08;已安装跳过&#xff09;&#xff08;前提已更换国内下载源&#xff09; ①&#xff1a;输入一下指令 ​②&#xff1a; 输入指令--在线获得 WiringPi 的源代码&#xff08;2019后不…

树莓派——wiringPi库详解

文章目录 查看树莓派引脚编号wiringPi库API大全硬件初始化函数通用GPIO控制函数时间控制函数串口通信串口通信配置测试代码串口通信实例 中断多线程其他 wiringPi&#xff08;特定平台&#xff0c;特定功能接口&#xff09;库是基于c语言开发的&#xff0c;提供了丰富的接口&am…