3

现在我正在开发使用 hibernate + postgresql 来持久化数据的应用程序。我们需要存储一些可序列化的HashMap,所以为此使用了LOB(oid)。但是由于 postgresql 中 oid 删除的一些问题,我们决定将这些数据存储为 bytea 而不是 oid。所以问题是,在保留旧数据的情况下,将列类型从 oid 更改为 bytea 的最佳方法是什么?如果有人可以为这种数据转换提供工作脚本/解决方案,那就太好了。

先感谢您。

4

2 回答 2

2

我遇到过同样的问题。所以我用四个请求来创建缓冲列

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
于 2019-02-27T11:00:43.197 回答
1

lobs 可能是可序列化哈希映射的错误解决方案,除非您需要使用偏移量进行搜索。拜茶更干净。问题是您可能需要一些停机时间来切换。

我可能会做的是创建一个新列并复制数据,然后取消链接,然后删除旧列。然后运行适当的真空作业。

于 2012-09-05T09:15:34.660 回答