OData数据加载至SQL Server:批量插入及通用映射设置咨询
批量提取OData响应中value数组数据并插入SQL Server的解决方法
用Azure Data Factory/ Synapse Analytics的话
- 先做数组扁平化:
连好OData源之后,添加扁平化转换,把value设为要展开的数组列,这样数组里的每个对象都会被拆成单独的行。 - 然后映射字段:
扁平化完成后,Id、OwnerId、Description这些字段都会变成独立列,直接在SQL Server接收器中配置字段映射,就能批量插入所有记录。
用SSIS的话
- 先处理OData源:
用OData源组件连接端点后,在数据流中添加脚本组件(作为转换),在脚本里读取响应的value数组,遍历每个元素并输出为行数据。给个C#示例:using System; using System.Data; using Microsoft.SqlServer.Dts.Pipeline.Wrapper; using Microsoft.SqlServer.Dts.Runtime.Wrapper; using Newtonsoft.Json.Linq; [Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute] public class ScriptMain : UserComponent { public override void Input0_ProcessInputRow(Input0Buffer Row) { string jsonResponse = Row.ResponseJson; JObject obj = JObject.Parse(jsonResponse); JArray values = (JArray)obj["value"]; foreach (JToken item in values) { Output0Buffer.AddRow(); Output0Buffer.Id = (int)item["Id"]; Output0Buffer.OwnerId = (int)item["OwnerId"]; Output0Buffer.Description = (string)item["Description"]; } } } - 再插入SQL Server:
脚本组件输出的行数据直接连接到OLE DB目标组件,配置好字段映射后即可批量插入。
用Power Automate的话
- 先获取OData数据:
用HTTP动作调用OData端点获取响应,再添加解析JSON动作,用你提供的示例JSON自动生成Schema。 - 遍历数组:
添加应用到每一个动作,选择解析后的value数组作为遍历对象。 - 批量插入:
要么在循环内用SQL Server的「插入行」动作,将当前遍历项的字段映射到表中;要么先把所有数组项收集到数组变量,最后用「批量插入行」动作一次性完成插入。
通用注意事项
- 确保SQL Server目标表的字段类型与OData返回的字段类型匹配(比如Id设为int,Description设为nvarchar)。
- 如果OData响应存在分页(带有
@odata.nextLink),需要额外处理分页逻辑,避免遗漏数据。
内容的提问来源于stack exchange,提问作者Balanjaneyulu K
相关产品推荐
相关产品推荐

