使用ADF导入含换行符的CSV至SQL数据库的行拆分问题
Azure Data Factory 处理含换行符的CSV字段行拆分错误的解决方法
核心问题定位
ADF的CSV解析器默认会优先识别换行符作为行分隔符,即使手动设置了;作为行分隔符,如果引号包裹的字段内有换行且未正确配置引号相关参数,解析器仍会误判为新行。
分步解决方法
精准配置数据集的引号与转义参数
在CSV类型数据集的设置面板中:- 把
Quote character设置为CSV中包裹多行字段的引号(通常是双引号"); - 把
Escape character也设置为相同的引号(符合CSV标准:引号内的引号用双引号转义,比如"评论里的""双引号"""); - 确认
Row delimiter设置为;,同时根据CSV实际情况勾选/取消First row as header。
- 把
用Binary数据集+Data Flow强制预处理
如果上述配置无效,改用Binary数据集读取原始文件,再通过Data Flow清洗:- 创建Binary数据集指向Blob中的CSV文件;
- 在Data Flow的Source组件中选择该Binary数据集,添加Derived Column转换,用表达式
replace(toString($$), '\n', '<br>')把字段内的换行符替换为HTML换行符或其他占位符; - 再用Select组件按
;拆分字段,最后输出到目标数据集,此时多行评论会被合并为单行。
验证原始CSV格式合法性
确保你的CSV没有格式错误:- 所有含换行的字段必须被完整的引号包裹,不能出现开头有引号但结尾缺失的情况;
- 字段内的引号必须用双引号转义,比如
"我有""特殊""字符",而非"我有"特殊"字符"。
用Lookup Activity快速验证解析效果
创建Lookup Activity指向你的CSV数据集,配置好分隔符和引号参数后运行,查看返回的结果是否为预期的3条记录。如果Lookup能正确识别,说明后续的Copy Activity可以正常工作。
内容的提问来源于stack exchange,提问作者Martijntrt
相关产品推荐
相关产品推荐

