Logic Apps:将API返回结果写入SQL Server的字段提取与批量插入求助
解决Logic Apps中API数据插入SQL Server的问题
先纠正字段提取的路径错误
你之前的表达式失败,核心原因是没匹配正确的JSON层级:
- API返回的
data是数组类型,必须先取第一个元素data[0],才能访问到里面的items数组 - 正确的单条数据字段提取表达式(安全写法,避免空值报错):
@body('Parsed JSON')?['data']?[0]?['items']?[0]?['subject'] @body('Submit Mimecast API')?['data']?[0]?['items']?[0]?['size']
批量插入的最佳实现:用For Each循环遍历所有记录
要把每条items里的记录插入SQL,按以下步骤操作:
解析JSON(必填步骤)
添加「Parse JSON」动作,将API返回的body作为输入源;点击「使用示例有效负载生成架构」,粘贴你提供的API返回JSON,自动生成结构化Schema。这一步能让Logic Apps精准识别JSON字段,避免后续引用出错。添加For Each循环
- 循环的「选择输出」来源设置为:
这个表达式会直接获取所有需要插入的记录集合。@body('Parsed JSON')?['data']?[0]?['items'] - 在循环内部添加「执行SQL存储过程」动作。
- 循环的「选择输出」来源设置为:
映射存储过程参数
存储过程的每个参数,对应当前循环项的字段,用@items('For_Each')?['字段名']取值,例如:- 主题参数:
@items('For_Each')?['subject'] - 大小参数:
@items('For_Each')?['size'] - 收件时间参数:
@items('For_Each')?['receiveddate']
依次把所有需要归档的字段映射到存储过程的对应参数即可。
- 主题参数:
额外处理:API分页(可选)
如果API返回的meta.pagination.next不为空,说明还有未获取的下一页数据:
- 外层套一个「Do Until」循环,终止条件设为
@empty(body('Parsed JSON')?['meta']?['pagination']?['next']) - 每次循环调用API时,把上一次返回的
next值作为分页参数传入(具体参数名参照API文档) - 获取新页数据后,重复上述Parse JSON + For Each插入流程即可
内容的提问来源于stack exchange,提问作者KodeNode
相关产品推荐
相关产品推荐

