我有一个大对象中的数据,现在我想制作它的一个副本,这样我就可以在保留原始副本的同时追加它。我可以使用任何 JDBC 调用或 SQL 语句来实现这种情况吗?
从我找到的每一个资源来看,似乎我实际上必须将所有数据读取到我的客户端并再次写出以获取副本。我更愿意节省往返行程。
最佳答案
如果您知道大对象的 oid
,则可以使用两个查询复制/克隆一个大对象。
INSERT INTO pg_largeobject_metadata (lomowner, lomacl)
SELECT lomowner, lomacl
FROM pg_largeobject_metadata
WHERE oid = <my_old_oid>
RETURNING oid AS my_new_oid;
INSERT INTO pg_largeobject (loid, pageno, data)
SELECT <my_new_oid>, pageno, data
FROM pg_largeobject
WHERE loid = <my_old_oid>;
my_old_oid
是大对象的已知oid
my_new_oid
是第一条插入语句返回的oid
pg_large_object reference
Object Type Identifier (oid) reference
关于postgresql - 我可以在数据库服务器上复制 Postgresql 大对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5157923/