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

如何在Azure Data Factory 2中处理双竖线分隔符

解决Azure Data Factory处理双竖线分隔文件的导入问题

这个坑我之前帮客户踩过——Azure Data Factory的内置TextFormat压根不支持多字符的列分隔符,这就是你设置"columnDelimiter": "||"后所有行都报“不兼容”的核心原因。别着急,不用修改原始输入文件也能解决,给你两个靠谱的方案:

方案1:用数据流(Data Flow)处理(推荐)

这是最灵活也最省心的方法,步骤很清晰:

  1. 新建一个数据流,添加源数据集指向你的双竖线分隔文件。注意:数据集的format里不用设置columnDelimiter,让ADF把整行数据当作一个字符串列读进来就行。
  2. 加一个派生列转换,用split函数把整行拆分成数组:
    split(toString(RowData), '||')
    
    这里的RowData是源数据里那个整行的列名,你可以根据实际情况替换。
  3. 再添加一个拆分列转换,选择刚才生成的数组列,按数组索引拆分出单独的列(比如索引0对应Column1,索引1对应Column2)。
  4. 最后用接收器把处理好的数据写入Azure SQL DB,记得做好列映射。

方案2:复制活动+临时字符替换(适合不想用数据流的场景)

如果你的场景不适合用数据流,也可以用这个变通方法:

  1. 在输入数据集的format配置里,把columnDelimiter设为一个原始文件中绝对不存在的单字符,比如~或者♦这种特殊符号。
  2. 在复制活动的映射界面,给每个目标列设置表达式,先替换分隔符再拆分:
    split(replace(toString(sourceColumn), '||', '~'), '~')[0]
    
    这里的~就是你刚才指定的单字符分隔符,每个目标列对应数组的不同索引([0]对应Column1,[1]对应Column2,以此类推)。

为什么你之前的尝试没用?

  • 不指定columnDelimiter时,ADF默认把整行当作一列,这是正常的默认行为;
  • 用Unicode写法\u007C\u007C也没用,因为TextFormat只识别单字符分隔符,多字符不管怎么转义都不支持;
  • 换成单竖线能正常工作,就是因为单字符符合TextFormat的要求。

测试的时候建议先用小文件验证逻辑,确保拆分后的列和SQL表的结构完全对应,避免出现列数不匹配的问题。

内容的提问来源于stack exchange,提问作者Ilse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:23:22