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

基于Azure Logic Apps的ADLS Gen2 JSON转XML导入Azure SQL工作流咨询

Azure Logic Apps 实现ADLS Gen2 JSON转XML导入Azure SQL 完整工作流

一、整体流程

触发器监控ADLS Gen2目标文件夹的JSON文件 → 读取文件内容 → 解析JSON结构 → 按特定值过滤/转换为XML → 导入Azure SQL数据库

二、各步骤详细配置

1. 触发器:Azure Data Lake Storage Gen2 - 当文件添加或修改时(属性)

  • 核心配置:
    • 存储账户名称:选择你的ADLS Gen2账户
    • 容器名称:指定目标容器
    • 文件夹路径:填写要监控的具体文件夹路径
    • 可选过滤:在触发条件中添加文件扩展名 等于 .json,仅触发JSON文件的处理

2. 操作1:Azure Data Lake Storage Gen2 - 获取文件内容

  • 配置:
    • 存储账户名称:与触发器一致
    • 文件路径:从触发器动态内容中选择文件路径
  • 作用:读取目标JSON文件的原始文本内容,为后续转换做准备

3. 操作2:Parse JSON(解析JSON结构)

  • 配置:
    • Content:选择获取文件内容操作的内容输出
    • Schema:点击使用示例有效负载生成,粘贴你的JSON示例自动生成Schema,示例Schema如下:
      {
        "type": "object",
        "properties": {
          "id": {"type": "string"},
          "specificValue": {"type": "string"},
          "details": {
            "type": "object",
            "properties": {
              "name": {"type": "string"},
              "age": {"type": "integer"}
            }
          }
        }
      }
      
  • 作用:将非结构化的JSON文本转为结构化对象,方便后续按字段过滤和转换

4. 操作3:Compose - JSON转XML(按特定值处理)

  • 根据你的需求选择对应表达式:
    • 基础转换(直接转XML):
      xml(json('{"Root": @body('Parse JSON')}'))
      
    • 按特定值过滤转换(仅保留specificValue为target的条目,若JSON是数组):
      xml(json(concat('{"Root": {"Items": ', @filter(body('Parse JSON'), item()?['specificValue'] == 'target'), '}}')))
      
  • 表达式说明:
    • json():将字符串格式的JSON结构转为可处理的JSON对象
    • xml():将JSON对象转换为标准XML格式,需确保有根节点(如<Root>)
    • filter():筛选符合特定值的JSON条目,适用于JSON为数组的场景

5. 操作4:Azure SQL Database - 执行SQL语句

  • 配置:
    • SQL服务器名称:你的Azure SQL服务器地址
    • 数据库名称:目标数据库
    • 认证方式:选择SQL认证,填写用户名和密码
    • SQL查询:编写XML导入语句,示例如下:
      DECLARE @XMLData XML = @xmlContent;
      INSERT INTO YourTargetTable (Id, SpecificValue, Name, Age)
      SELECT
          T.c.value('(id)[1]', 'NVARCHAR(50)'),
          T.c.value('(specificValue)[1]', 'NVARCHAR(100)'),
          T.c.value('(details/name)[1]', 'NVARCHAR(100)'),
          T.c.value('(details/age)[1]', 'INT')
      FROM @XMLData.nodes('/Root') AS T(c);
      
  • 动态参数:将Compose - JSON转XML的输出绑定到@xmlContent参数

三、针对你现有工作流的修正建议

  • 若缺少Parse JSON步骤,需补充:未解析的JSON文本直接转换可能导致XML结构混乱,无法按字段提取数据
  • 检查XML转换的根节点:SQL的OPENXML需要明确的根节点,确保转换后的XML包含如<Root>的顶层节点
  • SQL语句节点路径匹配:确保SQL中value()函数的节点路径与转换后的XML结构完全一致,避免数据插入失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 07:00:02