【发布时间】:2015-04-03 15:42:23
【问题描述】:
我已阅读文档,似乎没有明显的方法可以执行 ALTER TABLE ... ALTER COLUMN ... USING 语句以将 json 类型列直接转换为 hstore 类型。没有可用的功能(我知道)来执行演员表。
我的下一个最佳选择是创建一个hstore 类型的新列,使用一些外部工具将我的 JSON 数据复制到该新列,删除旧的 json 列并将新的 hstore 列重命名为旧列的名称。
有没有更好的办法?
到目前为止我所拥有的是:
$ CREATE TABLE blah (unstructured_data JSON);
$ ALTER TABLE blah ALTER COLUMN unstructured_data
TYPE hstore USING CAST(unstructured_data AS hstore);
ERROR: cannot cast type json to hstore
【问题讨论】:
-
JSON 可以有多维数组,而 hstore 不能。这意味着简单地在两者之间进行转换并不是一个直接的过程。只要您知道这两种数据类型并不总是相等的,就有很多可用的用户函数。
-
我听到了——假设我的 JSON 没有嵌套,只有引用的属性名称并且只有属性字符串,我应该能够编写从 JSON 到 HSTORE 的转换函数吗?或者您会建议在 Postgres 外部的 for 循环中执行此“更新”操作吗?
标签: json postgresql database-migration hstore