ADF将CSV导入Azure SQL时能否优雅处理异常并记录错误行?
ADF处理格式异常CSV行的实现方案
完全可以实现跳过错误行、同时留存完整异常行数据的需求,无需调整CSV转义字符配置,以下是两种可落地的方案:
方案1:复制活动内置容错(无代码,优先选用)
这是最轻量化的实现方式,直接利用ADF复制活动原生能力即可完成:
- 打开你的复制活动配置,切换到设置标签页,找到「容错」模块
- 勾选「跳过不兼容的行」,其中天然覆盖你遇到的两类异常场景:
- 文本内嵌双引号导致解析后列数多于预期的错误行
- 转义字符异常导致列数少于预期的错误行
- 开启「日志记录」,指定异常数据的输出位置:支持输出到Blob/ADLS Gen2的日志目录,也可配置写入SQL表、CosmosDB等存储作为日志表
- CSV数据集保持原有配置即可:文本限定符保留双引号,转义符无需修改,容错机制会直接跳过解析失败的整行,不会中断整体导入任务
方案2:数据流自定义校验(适合需要定制规则的场景)
如果你需要更灵活的异常判断规则,或者复制活动的容错逻辑无法覆盖你的特殊场景,可以用映射数据流实现:
- 新增一个映射数据流,源数据集配置为「无分隔符文本」格式,将每一行CSV内容完整读取为单个字符串列,避免ADF提前做CSV解析直接报错
- 添加派生列组件,自定义校验规则判断行合法性:比如统计行内双引号总数是否为偶数、统计逗号数量是否符合预期字段数-1等
- 添加条件拆分组件,将通过校验的行拆分到正常处理分支,按规则解析为对应字段写入目标库;未通过校验的异常行直接写入你指定的日志存储/日志表即可
- 该方案完全自主可控,不受ADF原生CSV解析逻辑限制,适配任意混乱格式的CSV异常行识别
补充说明
- 使用方案1时可配置「错误行百分比阈值」,当异常行占比超过预设值时自动中断任务,避免无效资源消耗
- 两种方案生成的异常日志都会包含原始行内容、错误原因、发生时间,可直接用于后续源数据修复回溯
内容的提问来源于stack exchange,提问作者analyzethat
相关产品推荐
相关产品推荐

