现在我正在开发使用 hibernate + postgresql 来持久化数据的应用程序。我们需要存储一些可序列化的HashMap,所以为此使用了LOB(oid)。但是由于 postgresql 中 oid 删除的一些问题,我们决定将这些数据存储为 bytea 而不是 oid。所以问题是,在保留旧数据的情况下,将列类型从 oid 更改为 bytea 的最佳方法是什么?如果有人可以为这种数据转换提供工作脚本/解决方案,那就太好了。
先感谢您。
现在我正在开发使用 hibernate + postgresql 来持久化数据的应用程序。我们需要存储一些可序列化的HashMap,所以为此使用了LOB(oid)。但是由于 postgresql 中 oid 删除的一些问题,我们决定将这些数据存储为 bytea 而不是 oid。所以问题是,在保留旧数据的情况下,将列类型从 oid 更改为 bytea 的最佳方法是什么?如果有人可以为这种数据转换提供工作脚本/解决方案,那就太好了。
先感谢您。
我遇到过同样的问题。所以我用四个请求来创建缓冲列
ALTER TABLE attachment add column content_bytea bytea
UPDATE attachment SET content_bytea = lo_get(content)
ALTER TABLE attachment drop column content
ALTER TABLE attachment rename column content_bytea to content
lobs 可能是可序列化哈希映射的错误解决方案,除非您需要使用偏移量进行搜索。拜茶更干净。问题是您可能需要一些停机时间来切换。
我可能会做的是创建一个新列并复制数据,然后取消链接,然后删除旧列。然后运行适当的真空作业。