如何将PostgreSQL中string类型列转为jsonb类型(值转数组)
解决方案(PostgreSQL)
直接修改列类型(推荐,一步到位)
执行以下SQL即可完成转换,USING子句会自动将原字符串值转为包含该字符串的jsonb数组:
ALTER TABLE table_a ALTER COLUMN type TYPE jsonb USING to_jsonb(array[type]);
安全验证步骤(可选,避免误操作)
如果担心直接修改出错,可先验证转换结果再执行修改:
- 查看转换后的数据是否符合预期:
SELECT id, to_jsonb(array[type]) AS converted_type FROM table_a;
- 确认无误后,再执行上面的
ALTER TABLE语句。
备选分步操作(适合需保留原数据的场景)
如果需要先保留原数据再替换列:
- 添加临时列存储转换后的jsonb数据:
ALTER TABLE table_a ADD COLUMN type_jsonb jsonb; UPDATE table_a SET type_jsonb = to_jsonb(array[type]);
- 验证临时列数据正确后,删除原列并重命名临时列:
ALTER TABLE table_a DROP COLUMN type; ALTER TABLE table_a RENAME COLUMN type_jsonb TO type;
注意:操作前请务必备份数据,避免意外数据丢失;该方案仅适用于PostgreSQL数据库(jsonb为PostgreSQL专有类型)。
内容的提问来源于stack exchange,提问作者Renato Souza de Oliveira
相关产品推荐
相关产品推荐

