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

Azure Data Factory读取JSON文件报错:解析/编码/多行问题求助

解决Azure Data Factory JSON解析错误及ADLS Gen2到Azure SQL DB迁移指南

一、JSON解析错误的具体解决步骤

根据你更新的信息,问题根源是UTF-8-BOM编码和JSON中含有的$特殊字符,按以下步骤处理:

  • 指定正确的文件编码
    在ADF的Source配置中,进入「Source options」→「Encoding」下拉框,选择「UTF-8-BOM」(匹配你的文件编码)。之前只启用了「Single document」但未指定对应编码,导致ADF无法正确解析文件头的BOM标记。

  • 处理含$的字段
    SQL Server的列名不允许包含$符号,所以需要在转换阶段重命名这类字段:

    • 如果用Copy Activity:在「Mapping」tab下,将_id.$oid这类字段的目标列名修改为合法名称(比如oid或id_oid)。
    • 如果用数据流:添加「Derived Column」活动,用表达式创建新字段(例如oid = _id.$oid),然后丢弃原_id字段。
  • 验证数据预览
    修改配置后重新预览数据,确认JSON解析错误消失,字段能正常加载。

二、ADLS Gen2 JSON到Azure SQL DB的完整迁移教程

下面是一套无需第三方工具的实操流程:

  1. 配置链接服务

    • 创建ADLS Gen2链接服务:选择「Azure Data Lake Storage Gen2」类型,配置存储账户信息,测试连接确保成功。
    • 创建Azure SQL DB链接服务:选择「Azure SQL Database」类型,输入服务器、数据库名及认证信息(SQL认证或MSI),测试连接。
  2. 构建迁移管道(Copy Activity 版本,适合简单场景)

    • 添加Copy Activity到管道,命名为Copy_JSON_to_SQL。
    • Source配置:选择ADLS Gen2链接服务,指定JSON文件路径;在「JSON settings」中勾选「Single document」;在「Source options」的「Encoding」中选择「UTF-8-BOM」。
    • Sink配置:选择Azure SQL DB链接服务,指定目标表(可选择「自动创建表」让ADF根据JSON结构生成表,或提前在SQL DB中建好表结构)。
    • 字段映射:在「Mapping」tab中,手动调整字段映射,确保含特殊字符的字段都重命名为SQL合法列名。
  3. 构建迁移管道(数据流版本,适合复杂转换)

    • 创建新的数据流,添加「Source」活动:连接ADLS Gen2链接服务,选择JSON文件,设置「JSON format」为「Single document」,「Encoding」选「UTF-8-BOM」。
    • 添加「Derived Column」活动:重命名含$的字段,例如创建新字段oid,表达式为_id.$oid;同时可以清理空值、转换数据类型(比如把dimension拆分成宽和高)。
    • 添加「Sink」活动:连接Azure SQL DB链接服务,指定目标表,完成字段映射。
    • 将数据流添加到管道中,运行测试。
  4. 调度与监控

    • 为管道设置调度(如每日增量同步),通过ADF的监控面板查看运行状态,排查可能出现的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:42:28