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列),导致复制活动终止
- 无法完成文件的完整复制
已执行排查步骤
- 确认ADF数据集架构的列数设置为369
- 验证CSV文件的格式与结构,确认大部分行符合预期列数
- 尝试定位问题行,但因文件过大无法手动识别异常
核心疑问
- 列数不符的可能原因是什么?
- 处理大型CSV文件以避免此类ADF问题的最佳实践或工具有哪些?
- 是否可配置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
相关产品推荐
相关产品推荐

