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

Redshift中Copy命令导致Super列值带引号的转换问题

解决Redshift中带引号的Super字符串转换为可操作数组的问题

针对你的需求,Redshift提供了json_parse()函数,可将字符串形式的JSON数组转换为可操作的Super数组类型,具体操作如下:

1. 确认数据类型

先通过typeof()函数验证当前Super字段的实际类型:

select id, typeof(super_field), super_field
from test.array_test;

执行后会看到id=2的super_field类型为string,id=3的为array。

2. 即时转换并展开数组

若仅需在查询时转换并展开数组,可直接在查询中用json_parse()解析字符串:

select 
  t.id,
  t1
from test.array_test t,
  json_parse(t.super_field) t1
-- 可选:仅处理字符串类型的记录
where typeof(t.super_field) = 'string';

执行该查询后,id=2的记录会被正确展开为数组元素。

3. 永久更新表中数据

若要将表中带引号的字符串永久转换为Super数组类型,执行更新语句即可:

update test.array_test
set super_field = json_parse(super_field)
where typeof(super_field) = 'string';

更新完成后,原字符串类型的Super值会全部转为数组类型,后续可直接用t.super_field t1的方式展开。

Copy命令优化建议

为避免后续导入时出现同类问题,使用Redshift Copy命令导入Super类型数据时:

  • 确保源数据中的JSON数组无额外引号包裹
  • 若源数据为JSON格式,在Copy命令中指定FORMAT AS JSON 'auto',让Redshift自动解析JSON结构为Super类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:52:15