ADF导入带|分隔符CSV文件时,如何跳过含额外列的错误行?
解决ADF复制活动中跳过含非法分隔符的CSV行问题
方法1:通过复制活动容错配置跳过错误行
打开复制活动的设置页签,找到容错板块:
- 勾选「跳过错误行」,设置「允许跳过的错误行数」为一个足够大的值(比如9999),这样ADF遇到列数不匹配的行时会自动跳过。
- 注意:如果你的合法行存在列数波动,这个方法可能误删正常行,仅当合法行列数固定时使用。
方法2:用数据流精准过滤非法行
如果需要更精准的控制,推荐用ADF数据流预处理:
- 配置源数据集:选择你的CSV文件,分隔符设为
|,开启「第一行作为标题」(如果有表头)。 - 计算每行列数:添加「派生列」转换,用表达式
size(split($$,'|'))生成一个新列(比如命名为column_count),这个表达式会统计当前行按|分割后的字段数量。 - 筛选合法行:添加「筛选」转换,设置筛选条件为
column_count == 你的预期列数(比如预期有6列就写==6),只保留列数符合要求的行。 - 写入目标:添加接收器,把过滤后的干净数据直接写入数据库,或者先存到临时存储再用复制活动处理。
方法3:开启引号转义识别内嵌分隔符
如果你的CSV里含|的字符串是用引号包裹的(比如"user|name",25,admin),直接在数据集里配置引号转义:
- 打开CSV数据集的连接页签,找到「引号字符」,设置为实际使用的引号(通常是
")。ADF会自动把引号内的内容识别为单个字段,忽略其中的|,从根源避免列数错误。 - 这是最优解,只要原始文件符合CSV规范(内嵌分隔符用引号包裹),优先用这个方法。
内容的提问来源于stack exchange,提问作者sai charan teratipally
相关产品推荐
相关产品推荐

