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

Snowflake执行CSV格式COPY INTO加载报错:出现':'而非字段分隔符','

问题根因

指定file_format=CSV仅代表Snowflake会按照CSV格式规则解析扫描到的文件,不会自动过滤非CSV格式的文件。
从报错信息可以看到,当前加载任务正在尝试解析citibike-trips-json/路径下的.json.gz后缀JSON文件:JSON结构使用:分隔键和值,和CSV格式配置的,字段分隔符规则不匹配,因此触发分隔符不匹配报错,和你配置的CSV格式参数本身无关。
教程中操作可以正常执行的核心原因是教程使用的stage路径下仅存放了CSV文件,不存在多格式混放的情况。

可落地解决方案
  • 方案1:加载时通过文件后缀规则过滤,仅加载CSV文件(适配当前混放场景,改造成本最低)
    在COPY INTO语句中添加PATTERN参数,通过正则匹配仅选中CSV后缀的文件,自动跳过JSON、Parquet等其他格式文件,示例命令:
    -- 匹配gzip压缩的CSV文件
    copy into trips from @citibike_trips
    file_format=CSV
    PATTERN => '.*[.]csv[.]gz';
    
    如果你使用的是未压缩的CSV文件,将匹配规则改为'.*[.]csv'即可。
  • 方案2:按格式拆分stage存储路径(长期使用推荐,性能最优)
    将stage下不同格式的文件移动到独立子目录,比如CSV文件统一存放至@citibike_trips/csv/、JSON文件存放至@citibike_trips/json/、Parquet文件存放至@citibike_trips/parquet/,加载时直接指定对应格式的子路径即可,不需要额外做正则匹配,加载性能更高:
    copy into trips from @citibike_trips/csv/
    file_format=CSV;
    
  • 方案3:配置错误跳过规则(仅临时测试使用,不推荐生产环境配置)
    如果只是临时验证加载逻辑,可以添加ON_ERROR='SKIP_FILE'参数,遇到解析失败的文件自动跳过,但该配置会无差别跳过所有解析报错的文件,可能漏过存在格式问题的合法CSV文件,存在数据漏载风险:
    copy into trips from @citibike_trips
    file_format=CSV
    ON_ERROR = 'SKIP_FILE';
    
前置排查步骤

正式执行加载前,可以先执行如下命令查看stage下的全量文件列表,确认CSV文件的实际存储路径、后缀格式,避免扫描无关文件:

LIST @citibike_trips;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:09:19