Azure Data Factory移除CSV每行末尾多余逗号的技术求助
解决CSV末尾多余逗号导致的ADF Copy Data报错问题
问题重现
运行ADF Copy Data活动时触发如下错误:
Operation on target Insert Into Temp Boston Table failed: ErrorCode=DelimitedTextMoreColumnsThanDefined,
'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error found when processing
'Csv/Tsv Format Text' source 'MDailyValues.csv' with row number 4: found more columns than expected column count 4.
,Source=Microsoft.DataTransfer.Common
根源是CSV中4列全有数据的行末尾多了两个逗号(,,),Excel无法识别但文本编辑器可见,导致ADF解析时误判列数超出定义的4列。
解决方法
方法1:ADF数据流整行清理后拆分
- 数据流源设置:把列分隔符改成文件中不存在的字符(比如
|),让ADF把每行当成单个字符串列(命名为RawRow)。 - 添加派生列转换,用表达式
replace(RawRow, ',,$', '')替换原始行,精准删除行尾的两个逗号。 - 添加拆分列转换,用逗号作为分隔符拆出4列,最后映射到目标SQL表即可。
方法2:Copy Data活动直接忽略多余列
打开Copy Data的源设置,拉到高级选项:
- 勾选「允许额外列」,ADF会自动跳过末尾逗号解析出的空列。
- 列映射阶段只把前4列对应到SQL表的字段,多余空列无需处理。
这个方法无需数据流,直接在Copy Data中就能解决,适合简单场景。
方法3:预处理CSV文件
- 本地处理:用PowerShell脚本批量清理:
(Get-Content "MDailyValues.csv") | ForEach-Object { $_ -replace ',,$', '' } | Set-Content "MDailyValues_clean.csv"
- 云端处理:如果文件存在Azure Blob存储,写个简单的Azure Function,触发后读取文件逐行清理再存回,ADF直接读取处理后的文件即可。
内容的提问来源于stack exchange,提问作者ZeroCool
相关产品推荐
相关产品推荐

