Snowflake加载含JSON字段的管道分隔TXT:去双引号方案
解决方案:处理Snowflake加载带双引号包裹的JSON列问题
方案1:加载时自动去除双引号(文件格式+COPY语句结合)
由于JSON内部的双引号会干扰FIELD_OPTIONALLY_ENCLOSED_BY的识别,我们可以通过基础文件格式配置+COPY时字段处理的方式解决:
- 创建适配管道分隔的文件格式:
CREATE OR REPLACE FILE_FORMAT pipe_txt_format TYPE = CSV FIELD_DELIMITER = '|' TRIM_SPACE = TRUE;
- 执行COPY INTO时,对目标JSON列使用
TRIM函数剔除首尾双引号:
COPY INTO your_target_table (col1, col2, json_column) FROM ( SELECT $1, $2, TRIM($3, '"') -- 精准去除JSON列首尾的双引号 FROM @your_stage/path/to/your_file.txt ) FILE_FORMAT = pipe_txt_format;
方案2:已加载数据的UPDATE修正
如果数据已经导入表中,仅需针对JSON列去除首尾双引号,执行以下UPDATE语句:
UPDATE your_target_table SET json_column = TRIM(json_column, '"') WHERE json_column LIKE '"%"'; -- 仅处理首尾带双引号的行,避免无效操作
内容的提问来源于stack exchange,提问作者gayathri
相关产品推荐
相关产品推荐

