postgresql - 我可以在数据库服务器上复制 Postgresql 大对象吗?

标签 postgresql jdbc oid

我有一个大对象中的数据,现在我想制作它的一个副本,这样我就可以在保留原始副本的同时追加它。我可以使用任何 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/

相关文章:

sql - 命中触发器后给定 SELECT 结果的 PostgreSQL INSERT 或 UPDATE 值

postgresql - Odoo/OpenERP 备份/恢复失败

postgresql - massive.js 中 'id' 列的命名

java - Jersey 休息服务 + mySQL 数据库 : No suitable driver found

java - MySQL语法错误异常 : Error in SQL Syntax

java - 如何将 OID 转换为 JCE 算法名称?

security - 如何确定用于扩展符合 X.509 的数字签名的有效 OID?

sql - 找到有条件的不间断期

bouncycaSTLe - 如何将 JCE 算法名称转换为 AlgorithmIdentifier 对象?

grails - 如何在Grails中添加jdbc驱动程序以访问Ingres数据库