反馈已提交

网络繁忙

大数据量循环批量写入API接口

  • 文档创建者:Wendy123456
  • 历史版本:2
  • 最近更新:Wendy123456 于 2026-06-25
  • 1. 概述

    1.1 应用场景

    用户使用「JSON生成」算子生成多条 JSON 语句写入 API 时,每条 JSON 语句会触发一次 API 请求;当数据量较大时(如 1000 条),会产生等量的 API 调用,极易触发接口的频率限制,导致任务失败。

    1782178387369415.png

    1.2 实现思路

    1)假设每次写入 100 条数据,计算来源数据要写入的次数,作为分页参数。

    2)循环容器节点循环方式为条件循环,执行条件为${loopTimes}<=${分页}

    3)循环容器内:

    • 「DB表输入」算子每次读取 100 条数据,直至读取所有数据。

    • 使用「JSON生成」算子和「Spark SQL」算子,将待写入的多条数据拼接,批量写入接口。

    注:本文方案,适用于支持批量写入的接口。

    1782178981727749.png

    1.3 任务展示

    Demo 示例详情请参见:https://demo.finedatalink.com/  大数据量循环批量写入API接口

    2. 操作步骤

    2.1 准备工作

    准备一个支持批量写入的接口。本文示例的接口是使用 数据接收 功能发布的接口:

    6.png

    示例 API 的JSON 结构如下:

    [{
        "ID": 19.0,
        "姓名": "杜浩",
        "工资": 1200.0,
        "出生日期": 25196.0,
        "入职时间": 33785.0,
        "籍贯": "山东",
        "性别": "男",
        "部门": "人力资源部",
        "name": null
    }, {
        "ID": 24.0,
        "姓名": "彭勃",
        "工资": 3600.0,
        "出生日期": 25154.0,
        "入职时间": 32927.0,
        "籍贯": "青海",
        "性别": "男",
        "部门": "人力资源部",
        "name": null
    }]

    2.2 计算要写入的次数并输出为参数

    1)新建定时任务,拖入「参数赋值」节点。

    2)假设每次写入 100 条数据(根据实际情况设置,每次写入的数据条数需要小于等于接口支持写入的最大数据量),计算出要写入的次数,并输出为参数。

    注:下面 SQL 语句以 MySQL 数据库语法为例,其他数据库需要根据语法自行修改。

    select ceil(count(`ID`)/100) as a  from  `demo1`.`人员信息表`

    24.png

    2.3 设置循环容器

    拖入「循环容器」节点,循环执行模式为「条件循环」,执行条件设置为${loopTimes}<=${分页}。如下图所示:

    1782180691259649.png

    2.4 循环容器内设置

    2.4.1 输出分页参数

    本文示例中,我们取数时会使用 OFFSET 参数跳过指定数量的行,再配合 LIMIT 实现分页。

    1782385374266867.png

    所以需要先计算出每次循环使用的 OFFSET 值。

    「循环容器」内拖入「参数赋值」节点,使用内置参数 loopTimes 计算 OFFSET 值,并输出为参数。如下图所示:

    注:OFFSET 起点设置为0,表示从第一条数据开始取数。

    SELECT  100*(${loopTimes}-1)  as offset

    10.png

    2.4.2 接口每次写入多条数据

    1)「参数赋值」节点后拖入「数据转换」节点,进入「数据转换」节点。

    2)拖入「DB表输入」算子,每次读取 100 条数据,直至到达循环结束条件。

    注:需要使用 ORDER BY 语句保证返回结果的顺序,ORDER BY 后字段建议是主键或唯一索引。

    SELECT * FROM `demo1`.`人员信息表`
    ORDER BY `ID` 
    LIMIT 100 OFFSET ${offset}

    26.png

    点击「数据预览」,可看到取出的数据。如下图所示:

    1782181449769832.png

    3)拖入「JSON生成」算子,生成 API 接口需要的数据。如下图所示:

    1782181551422066.png

    点击「数据预览」,可看到生成了 100 条 JSON 格式的数据。如下图所示:

    1782181598869498.png

    若此时调用接口写入数据,将调用 100 次接口。

    4)拖入「Spark SQL」算子,拼接所有的 JSON 语句。

    注:SQL 语句中的「JSON生成」为上游算子的名称,需要点击输入。

    SELECT 
        CONCAT(
            '[',
            CONCAT_WS(',', collect_list(JSON生成.`JSON_DATA`)),
            ']'
        ) AS json_array
    FROM JSON生成

    1782181725950666.png

    点击「数据预览」,如下图所示:

    1782181828644665.png

    5)拖入「API输出」算子,将数据写入到 API 接口中。如下图所示:

    1782181902246010.png

    2.5 效果查看

    运行成功后,可看到「循环容器」会根据分页次数执行对应的循环次数,并且每次动态修改 OFFSET 起点,最终实现全量写入接口。

    1782182599328958.png







    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持