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

Azure Data Factory复制活动报错DelimitedTextMoreColumnsThanDefined求助

处理ADF复制活动中CSV列数不符的问题

报错信息

ErrorCode=DelimitedTextMoreColumnsThanDefined,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error found when processing 'Csv/Tsv Format Text' source 'CRM_XXX_###.CSV' with row number 1140713: found more columns than expected column count 369.,Source=Microsoft.DataTransfer.Common,'

背景

  • 使用Azure Data Factory(ADF)将3.8GB的大型CSV文件CRM_XXX-###.CSV从SFTP服务器复制到Azure Blob Storage
  • 数据集架构中指定列数为369

问题

  • 处理到第1140713行时触发列数不符错误(实际列数超过定义的369列),导致复制活动终止
  • 无法完成文件的完整复制

已执行排查步骤

  1. 确认ADF数据集架构的列数设置为369
  2. 验证CSV文件的格式与结构,确认大部分行符合预期列数
  3. 尝试定位问题行,但因文件过大无法手动识别异常

核心疑问

  1. 列数不符的可能原因是什么?
  2. 处理大型CSV文件以避免此类ADF问题的最佳实践或工具有哪些?
  3. 是否可配置ADF跳过或记录问题行,而非终止整个复制活动?

补充信息

  • 源文件包含数百万行,无法手动全量检查
  • CSV文件使用|作为分隔符
  • 推测需调整引号/转义字符配置

解决方案建议

1. 列数不符的可能原因

  • 分隔符误解析:问题行的文本内容中存在未被引号包裹的|字符,ADF将其识别为新列,导致列数超过定义值
  • 引号/转义配置不匹配:若CSV中用引号包裹含特殊字符的字段,但ADF数据集未启用引号识别、或引号类型(单/双引号)设置错误,会导致字段内容被错误拆分
  • 行格式异常:部分行存在换行符未正确处理的情况,引发多行合并或单行拆分,造成列数统计错误
  • 源文件损坏:文件在生成或传输过程中损坏,导致特定行结构异常

2. 处理大型CSV文件的最佳实践与工具

  • 预处理工具:
    • 使用awk脚本快速定位异常行:awk -F'|' '{if(NF!=369) print NR":"$0}' CRM_XXX-###.CSV > error_rows.txt(NR为行号,NF为当前行列数)
    • 用Python的csv模块编写脚本,高效遍历文件并校验列数,输出异常行详情:
      import csv
      with open('CRM_XXX-###.CSV', 'r', encoding='utf-8') as f:
          reader = csv.reader(f, delimiter='|')
          with open('error_log.txt', 'w', encoding='utf-8') as log:
              for row_num, row in enumerate(reader, 1):
                  if len(row) != 369:
                      log.write(f"Row {row_num}: {len(row)} columns\n")
      
    • 借助PowerShell命令筛选异常行:Import-Csv -Path .\CRM_XXX-###.CSV -Delimiter '|' | Where-Object { $_.PSObject.Properties.Count -ne 369 } | Export-Csv -Path .\error_rows.csv -NoTypeInformation
  • ADF配置优化:
    • 启用数据源的自动架构检测,让ADF自动识别源文件列结构,避免手动定义架构的误差
    • 开启复制活动的并行复制(在活动设置中调整parallelCopies参数),提升大型文件的处理效率
  • 数据源规范:要求CSV生成端严格遵循格式规范,含特殊字符的字段必须用引号包裹,禁止在字段内容中直接使用分隔符

3. 配置ADF跳过/记录问题行

在ADF源数据集的Delimited Text Format设置中,开启以下容错选项:

  • 勾选跳过不兼容列的行:ADF会自动跳过列数不符的行,继续完成剩余数据复制
  • 开启记录不兼容的行:指定Azure Blob Storage中的存储路径,ADF会将异常行的详细信息写入该路径下的日志文件,方便后续排查
  • 注意:需确保目标数据集未启用严格架构校验,避免因架构不匹配触发其他错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:20:09