将VARCHAR字段转换为SUPER类型时报错,求解决方法
解决VARCHAR转SUPER类型的方法
直接执行ALTER TABLE mytable ALTER COLUMN detail TYPE super;报错,是因为部分数据库(如Amazon Redshift)不支持直接从VARCHAR类型转换为SUPER类型,需要通过中间字段中转完成转换,具体步骤如下:
添加临时SUPER类型字段
ALTER TABLE mytable ADD COLUMN temp_detail SUPER;将原VARCHAR字段的JSON数据解析为SUPER类型,写入临时字段
UPDATE mytable SET temp_detail = JSON_PARSE(detail);(可选)验证数据转换是否正确,避免数据丢失或格式错误
SELECT detail, temp_detail FROM mytable LIMIT 10;删除原VARCHAR字段
ALTER TABLE mytable DROP COLUMN detail;将临时字段重命名为原字段名
ALTER TABLE mytable RENAME COLUMN temp_detail TO detail;
如果你的数据库中解析JSON的函数不是JSON_PARSE,可以替换为对应数据库的JSON解析函数,核心是先把字符串格式的JSON解析为SUPER类型后再替换原字段。
内容的提问来源于stack exchange,提问作者Doug Fir
相关产品推荐
相关产品推荐

