我一直在使用Postgres将JSON对象存储为字符串,现在我想利用PG的内置json
和jsonb
类型来更有效地存储对象。
基本上,我想解析字符串化的JSON并将其放在json
PG中的一列中,而不必求助于将所有值读入Python并在那里进行解析。
理想情况下,我的迁移应如下所示:
UPDATE table_name SET json_column=parse_json(string_column);
我看了一下Postgres的JSON函数,尽管似乎很琐碎,但似乎没有一种方法可以做到这一点。作为记录,我的JSON对象只是一维字符串数组。
有什么办法吗?
不需要parse_json
列,只需更改列的类型即可:
ALTER TABLE table_name
ALTER COLUMN json_column TYPE json USING json_column::json;
请注意,如果您打算对这些值进行大量JSON操作(即,从对象中提取元素,修改对象等),则最好使用jsonb
。json
应该仅用于存储JSON数据。另外,正如Laurenz Albe指出的那样,如果您不需要对这些值进行任何JSON操作,并且您对postgresql可以对它们进行的验证不感兴趣(例如,因为您相信源始终提供有效的JSON),那么使用text
是一个完全有效的选项(或bytea
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句