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

ADF Copy Activity加载CSV至Snowflake无法识别列内双引号致列拆分

ADF Copy Activity加载CSV至Snowflake时双引号导致列错分问题解决方案

问题根因

该问题由ADF CSV解析规则与源文件的双引号转义规则不匹配导致:RFC4180标准CSV规范中,字段值内部的双引号需要用两个连续双引号做转义,若ADF数据集未正确配置引号识别字符、转义字符,解析器会误判字段在值内的双引号位置提前结束,把后续逗号后的内容拆分到下一列。
给出的异常示例完全符合该故障特征:原值"My brother often watches different cricket shows on different ""screens"", but on the same different platform"本身是合规CSV字段格式,正确解析后应作为单列值存入,最终入库值为My brother often watches different cricket shows on different "screens", but on the same different platform。
my dataset configuration

可行解决方案

  • 方案1:修正源CSV数据集的格式配置(优先推荐)
    打开ADF中对应源CSV数据集的「连接」配置页,找到文件格式设置板块,按如下参数调整:
    • 引号字符:设置为双引号 "
    • 转义字符:设置为双引号 "(匹配双引号用双引号转义的标准规则,不要设置为反斜杠)
    • 确认开启「识别带引号字段」相关选项,保存配置后重新运行复制活动即可正常解析。
  • 方案2:启用Snowflake原生解析绕过ADF解析缺陷
    若调整ADF配置后仍存在解析异常,可关闭ADF侧的CSV结构解析,直接用Snowflake的批量加载能力解析文件:
    在复制活动接收器设置中选择PolyBase/COPY命令批量加载模式,跳过ADF的中间结构解析,在Snowflake侧为对应外部阶段配置匹配的CSV文件格式:
    CREATE OR REPLACE FILE FORMAT csv_quoted_format
    TYPE = CSV,
    FIELD_DELIMITER = ',',
    FIELD_OPTIONALLY_ENCLOSED_BY = '"',
    ESCAPE = '"',
    SKIP_HEADER = 1;
    
    配置完成后复制活动会直接调用Snowflake原生加载能力,对特殊转义字符的兼容性远高于ADF默认解析器,适合字段内特殊字符较多的CSV加载场景。
  • 方案3:兜底预处理方案
    若前两种方案受限于环境权限无法配置,可在复制活动前增加映射数据流步骤:先将CSV作为纯文本文件逐行读取,通过自定义正则逻辑手动匹配带双引号转义的字段边界,完成字段拆分后再写入Snowflake。该方案性能较差,仅建议小数据量场景使用。

注意:配置过程中不要随意修改字段分隔符参数,保持默认逗号分隔即可,错误修改分隔符会引发新的列错位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:18:25