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

Snowflake通过Airflow加载JSON报错:字符串外存在无效字符'/'

问题分析与解决方案

针对你通过Airflow加载JSON到Snowflake时出现的Error parsing JSON: invalid character outside of a string: '/'报错,结合手动加载正常、同类DAG无问题的情况,可按以下步骤排查解决:

1. 验证外部Stage中的文件真实性

报错指向文件首字符为/,大概率是Stage中存储的文件与你手动上传的正确JSON不一致:

  • 执行Snowflake命令查看Stage文件:
    LIST @s3_data_pipeline_repo/transactions.json;
    
  • 将Stage中的文件下载到本地检查:
    GET @s3_data_pipeline_repo/transactions.json file:///your/local/directory/;
    
    用文本编辑器或hexdump命令确认文件开头是否存在/或其他异常字符,同时对比本地正确文件的内容与编码。

2. 检查Airflow的文件上传逻辑(若涉及)

如果Airflow负责将JSON文件上传到S3/Stage,确认上传步骤未出现错误:

  • 检查上传任务的文件路径是否正确,避免误传了其他以/开头的错误文件
  • 验证上传过程中是否存在编码转换问题,确保文件以UTF-8格式上传

3. 优化COPY语句的文件格式参数

在现有FILE_FORMAT中补充以下参数,增强容错性:

COPY INTO "STORE"."STAGING"."RAW_DATA"
FROM @s3_data_pipeline_repo
FILES=('transactions.json')
FILE_FORMAT=(
    TYPE=JSON,
    STRIP_OUTER_ARRAY=TRUE,
    REPLACE_INVALID_CHARACTERS=TRUE,
    TRIM_SPACE=TRUE,
    ESCAPE_UNENCLOSED_FIELD=NONE,
    ENCODING='UTF8',
    DATE_FORMAT=AUTO,
    TIME_FORMAT=AUTO,
    TIMESTAMP_FORMAT=AUTO
)
MATCH_BY_COLUMN_NAME=CASE_INSENSITIVE
ON_ERROR=ABORT_STATEMENT
  • ENCODING='UTF8'强制指定编码,避免解析时的编码冲突
  • TRIM_SPACE=TRUE去除首尾空白字符(若存在)
  • ESCAPE_UNENCLOSED_FIELD=NONE关闭非字符串字段的转义,防止误解析

4. 直接在Snowflake控制台测试COPY命令

手动执行上述COPY语句,若同样报错则确认是Stage文件问题;若执行成功,则排查Airflow的Snowflake连接配置:

  • 确认Airflow使用的Snowflake连接是否指向正确的仓库、数据库与Schema
  • 检查连接的权限是否足够读取Stage并写入目标表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:58:23