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

如何通过PostgreSQL UPDATE语句还原字符串化JSON并转为JSONB?

解决转义JSON字符串还原并修改列类型的问题

没问题,我帮你梳理一下具体的操作步骤,完全用SQL就能搞定这个遗留问题(以下操作基于PostgreSQL,因为你提到了jsonb类型):

第一步:将转义后的字符串还原为原始JSON对象

首先,我们需要把数据库里存储的转义JSON字符串(比如"{ \"foo\": \"bar\" }")还原成真正的JSON对象。假设你的表名为your_table,存储该字符串的列名为json_data,执行以下UPDATE语句:

UPDATE your_table
SET json_data = replace(trim(json_data, '"'), '\"', '"')::json;

语句解释:

  • trim(json_data, '"'):去掉字符串外层包裹的双引号(因为JSON.stringify后的结果被转义存储时,会带上外层引号)
  • replace(..., '\"', '"'):把字符串里转义的双引号\"替换成普通双引号",还原出合法的JSON结构
  • ::json:将处理后的字符串强制转换为JSON类型

第二步:修改列数据类型为jsonb

确认数据还原正确后,就可以把列类型改成jsonb了,执行ALTER TABLE语句:

ALTER TABLE your_table
ALTER COLUMN json_data TYPE jsonb USING json_data::jsonb;

重要注意事项:

  • 先备份数据:在执行UPDATE和ALTER操作前,一定要先备份表数据,避免操作失误导致数据丢失
  • 分批处理大表:如果你的表数据量很大,直接执行全表UPDATE可能会锁表影响业务,建议按主键范围拆分分批更新
  • 验证数据:操作完成后,可以用SELECT json_data FROM your_table LIMIT 10;检查数据是否正确还原为JSON对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:28:28