PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

33.3. 客户端接口 #

33.3.1. 创建大对象
33.3.2. 导入大对象
33.3.3. 导出大对象
33.3.4. 打开大对象
33.3.5. 写入数据
33.3.6. 读取数据
33.3.7. 查找定位
33.3.8. 获取当前位置
33.3.9. 截断大对象
33.3.10. 关闭大对象
33.3.11. 删除大对象

在客户端通过 libpq 访问大对象的 API 模仿了经典的 Unix 文件系统接口规范:

Important

所有使用文件描述符操作大对象的函数必须在显式事务块内部执行(即在 BEGIN ... COMMIT 之间),因为大对象文件描述符仅在单次事务生命周期内有效,事务提交或回滚时所有已打开的大对象描述符将被系统自动关闭。

33.3.1. 创建大对象 #

函数 lo_creat() 与 lo_create() 用于在数据库中分配一个全新的大对象并返回其专属 OID 标识符。

33.3.2. 导入大对象 #

函数 lo_import() 用于将操作系统客户端本地文件系统中的文件内容直接读取并作为大对象存入数据库。

33.3.3. 导出大对象 #

函数 lo_export() 用于将数据库中的大对象完整读取并写出到操作系统客户端本地文件系统中。

33.3.4. 打开大对象 #

函数 lo_open() 用于打开一个既有的大对象以供后续读写,成功时返回一个非负整数的大对象描述符(类似于 Unix 文件描述符)。

33.3.5. 写入数据 #

函数 lo_write() 从指定的内存缓冲区向打开的大对象当前写入位置写入指定字节数的数据。

33.3.6. 读取数据 #

函数 lo_read() 从打开的大对象当前读取位置抓取指定字节数的数据并填充到调用方提供的内存缓冲区中。

33.3.7. 查找定位 #

函数 lo_lseek() 与 64 位版本的 lo_lseek64() 用于改变大对象内部当前的读写游标偏移量。

33.3.8. 获取当前位置 #

函数 lo_tell() 与 64 位版本的 lo_tell64() 用于获取大对象当前内部读写游标相对于起始位置的字节偏移量。

33.3.9. 截断大对象 #

函数 lo_truncate() 与 64 位版本的 lo_truncate64() 用于将大对象的物理存储尺寸强制截断或扩展为指定的字节长度。

33.3.10. 关闭大对象 #

函数 lo_close() 用于关闭一个先前打开的大对象描述符,并释放其在服务端占用的句柄资源。