)
Kettle 循环调用接口分页插入数据库保姆级教程前言最近在做数据同步的需求对方提供了一个 HTTP 接口需要把接口返回的数据全部拉取下来存到我们自己的数据库里。数据量还挺大的一次性返回肯定不行只能分页调用。之前没用过 Kettle 做这种场景折腾了一番总算搞定了把过程记录下来分享给大家。一、需求分析先说下要做什么调用第三方 HTTP 接口获取数据接口支持分页每页返回一定数量的数据把所有页的数据都取出来存到数据库表中整体思路就是循环调用接口 → 解析 JSON → 入库用 Kettle 的转换作业来实现。二、具体步骤步骤 0接口调用结构返回参数如下json{code:0,msg:操作成功,data:{records:[{id:000b2bdd2629ef7ea46c0a3ed4bd0d47,labelId:681ae4e632432232a96f42a9df36ce0,itemId:59ff4254231bdca4a176520661,createTime:2026-06-22 12:56:55,updateTime:2026-06-22 12:56:55},{}···],total:6967,size:100,current:1,orders:[],searchCount:true,pages:70}}打开 KettlePDI新建一个转换后面所有的数据处理逻辑都在这个转换里完成。查询总条数步骤 1定义变量参数这一步很关键我们需要定义几个变量来控制分页page当前页码从 1 开始limit每页多少条数据total总页数右键转换空白处 → 转换设置 → 命名参数把这些变量定义好。步骤 2拖入 HTTP 组件在左侧核心对象里找到HTTP client组件拖到画布上。这个组件用来发 HTTP 请求。步骤 3配置 HTTP 请求双击 HTTP client 组件进行配置URL 地址http://xxx/api/data?page${page}size${pageSize}这里用${变量名}的方式引用我们之前定义的参数。请求头如果接口需要认证记得在请求头里加上 Token 之类的Authorization: Bearer xxx Content-Type: application/json步骤 4添加 JSON Input 解析数据HTTP 返回的是 JSON 字符串需要解析。拖入JSON input组件连接到 HTTP client 后面。$.data.total获取总数步骤 5获取到总数之后计算页数用JavaScript脚本步骤 6设置变量以供后续逻辑使用步骤 7检查current_page是否满足循环条件如果满足则继续步骤 8开始具体调用逻辑跟前置获取total相似包括数据库保存步骤 9更新current_page通过JavaScript脚本设置变量// 获取当前变量值注意若变量未定义需先初始化varcurrentPageparseInt(parent_job.getVariable(current_page));varbatchSizeparseInt(parent_job.getVariable(batch_size));// 变量自增currentPagecurrentPage1;// 更新变量parent_job.setVariable(current_page,currentPage.toString());// 必须返回true否则无法流转至下一个节点true;思路是这样的先调用一次接口拿到总条数算出总页数然后循环执行转换每执行一次 page1直到 page totalPage 时停止可以用JavaScript 脚本或计算器组件来实现 page 自增用检测字段值组件判断是否继续。获取方式百度网盘国内推荐文件名循环调用接口保存数据库.zip链接https://pan.baidu.com/s/1mrmWvkiHox0lavt3vKKiMQ提取码fpve总结以上就是用 Kettle 调用 HTTP 接口分页同步数据的完整过程。整体思路其实不难就是把传统的 ETL 思路用在 API 数据源上。如果大家在实际操作中遇到问题欢迎评论区留言讨论参考链接Kettle 官方文档JSONPath 语法教程