You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ADF中逐个将ADLS的JSON文件数据传入存储过程?

ADF逐个处理ADLS JSON文件并调用存储过程实现方案

1. 获取目标目录下所有JSON文件列表

使用Get Metadata活动,配置ADLS Gen2数据集指向存放JSON的目录,勾选「子项」选项。执行后该活动会返回目录下所有文件的详细信息(包括文件名、完整路径等)。

2. 用ForEach循环实现逐个处理

添加ForEach活动,将其迭代项设置为:

@activity('Get Metadata活动名称').output.childItems

如果需要顺序处理文件,可在ForEach的「设置」里将「顺序」改为「是」;若允许并行处理,保持默认并行即可(默认并行度20,可按需调整)。

3. 循环内读取单个JSON文件内容

在ForEach内部添加Lookup活动:

  • 配置ADLS数据集,动态指定文件路径为@item().path(完整路径)或@item().name(相对路径,需确保数据集根目录正确)。
  • 关闭「第一行仅」选项,这样Lookup会读取整个JSON文件的内容并返回为数组格式。

4. 循环内调用存储过程插入数据

接着添加存储过程活动,连接到目标SQL数据库的数据集:

  • 选择对应的存储过程,设置参数(比如参数名@JsonContent),参数值绑定为:
@string(activity('读取单个JSON的Lookup活动名称').output.value)

将JSON数组转为字符串传入存储过程。

5. 存储过程解析JSON并插入表

编写SQL存储过程,用OPENJSON解析传入的JSON字符串,映射字段后插入目标表。示例代码:

CREATE PROCEDURE dbo.InsertJsonToTable
    @JsonContent NVARCHAR(MAX)
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO YourTargetTable (Col1, Col2, Col3)
    SELECT
        JSON_VALUE(json_item, '$.field1') AS Col1,
        JSON_VALUE(json_item, '$.field2') AS Col2,
        JSON_QUERY(json_item, '$.field3') AS Col3
    FROM OPENJSON(@JsonContent) AS json_item;
END

关键注意点

  • 若JSON文件较大,Lookup活动可能存在性能瓶颈,可改用Copy活动将文件内容先写入SQL临时表,再调用存储过程处理。
  • 调整ForEach并行度时,需考虑SQL数据库的承载能力,避免并发过高导致性能问题。
  • 确保ADLS数据集的权限配置正确,保证ADF能正常读取文件。

内容的提问来源于stack exchange,提问作者newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 22:30:12