现在我正在开发使用hibernate + postgresql来保存数据的应用程序。我们需要存储一些可序列化的HashMaps,因此LOB(oid)用于此目的。但是由于postgresql中删除oid的一些问题,我们决定将这些数据存储为bytea而不是oid。所以问题是,在保留旧数据的情况下,将列类型从oid更改为bytea的最佳方法是什么?如果有人可以为这样的数据转换提供工作脚本/解决方案,那就太棒了。
提前谢谢。
答案 0 :(得分:1)
我可能会做的是创建一个新列并复制数据,然后取消链接,然后删除旧列。然后运行适当的真空工作。
答案 1 :(得分:1)
我有同样的问题。所以我用创建缓冲列的四个请求做到了
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