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

Snowflake中COPY INTO解析字符串数组至ARRAY列报错如何解决?

问题:Snowflake导入CSV到ARRAY列时JSON解析错误

我的Snowflake表中有一个声明为ARRAY数据类型的列,尝试通过COPY INTO从CSV导入数据时遇到错误。某行该列的值为["A","B"],但返回错误:

Error parsing JSON: "[""A"",""B""]"

我在Snowflake控制台测试CHECK_JSON函数时得到不一致结果:

CALL CHECK_JSON('["A", "B"]'); -- 返回null(表示JSON格式有效)
CALL CHECK_JSON("[\"\"A\"\",\"\"B\"\"]"); -- 返回错误

请问应如何格式化数据来解决此错误?


解决方法

1. 修正CSV源文件的转义格式

错误信息里的[\"\"A\"\",\"\"B\"\"]说明CSV中的JSON数组被重复转义了——CSV默认会把字段内的双引号转义为两个双引号,这会破坏JSON的格式。你需要确保CSV中该列的原始值是未被额外转义的标准JSON数组,即直接写入["A","B"],不要给JSON里的双引号加额外转义。

2. 调整COPY INTO的文件格式参数

如果无法修改CSV源文件,可以通过定义正确的文件格式来适配:

-- 创建适配JSON数组的CSV文件格式
CREATE OR REPLACE FILE_FORMAT array_csv_format
TYPE = CSV
FIELD_OPTIONALLY_ENCLOSED_BY = '"' -- 仅当字段包含分隔符时用双引号包裹
ESCAPE = '\\' -- 指定反斜杠为转义字符,避免CSV的双引号转义规则干扰JSON
TRIM_SPACE = TRUE;

-- 使用该格式执行导入
COPY INTO your_target_table
FROM @your_stage_location
FILE_FORMAT = array_csv_format;

3. 显式解析字符串为ARRAY类型

如果CSV中的值已经是被错误转义的字符串,可以在导入时用PARSE_JSON函数显式转换:

COPY INTO your_target_table(id, target_array_column)
SELECT 
    $1, -- 对应其他列
    PARSE_JSON($2) -- 将第二列的字符串解析为ARRAY
FROM @your_stage_location
FILE_FORMAT = (TYPE = CSV);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:27:27