ADF复制数据活动致CSV多行拆分,求原样传输及换行移除方案
解决CSV文件原样传输至Azure Blob并移除单元格内换行符的方案
一、确保CSV文件原样传输到Blob容器
ADF复制数据活动默认会按行分隔符拆分内容,导致带换行的单元格被拆成多行。要原样传输,需调整以下设置:
- 数据源设置:选择CSV格式后,在列分隔符处选
自定义,输入一个CSV文件中未使用的特殊字符组合(比如|~|),避免和内容冲突。 - 行分隔符:选
自定义,输入对应系统的换行符(Windows用\r\n,Unix用\n),同时开启引用字符设置——将引用字符设为"(CSV标准单元格引用符),这样复制活动会识别被双引号包裹的内容为单个单元格,即使包含换行符也不会拆分。 - 不要设置为“无分隔符”,这会导致ADF无法解析文件结构,引发报错。
二、用数据流移除Comments列内的换行符
文件成功上传到Blob后,在数据流中处理换行:
- 添加源数据集,指向Blob中的CSV文件,同步配置好引用字符
"、列分隔符和行分隔符,确保源能正确读取带换行的单元格内容。 - 添加派生列转换,针对Comments列使用替换函数去掉换行符:
该函数会把单元格内的回车replace(replace(Comments, '\r', ''), '\n', ' ')\r和换行\n替换成空格,将段落内容合并成单行。 - 后续添加接收器,将处理后的文件写入目标存储或直接插入数据表。
三、验证要点
- 确保原始CSV文件的带换行单元格已用双引号包裹(这是CSV标准写法,若原始文件没加,需先预处理给Comments列加上双引号,否则ADF无法识别为单个单元格)。
- 测试复制活动后的Blob文件,确认Comments列的换行内容仍保持在单个单元格内,未被拆分。
内容的提问来源于stack exchange,提问作者ZeroCool
相关产品推荐
相关产品推荐

