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

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数据流整行清理后拆分

  1. 数据流源设置:把列分隔符改成文件中不存在的字符(比如|),让ADF把每行当成单个字符串列(命名为RawRow)。
  2. 添加派生列转换,用表达式 replace(RawRow, ',,$', '') 替换原始行,精准删除行尾的两个逗号。
  3. 添加拆分列转换,用逗号作为分隔符拆出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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:15:22