0

我毫不怀疑,我的数据库中有一个oid类型的字段我正在保存文本文件,我想知道我是否可以以某种方式检索您保存文件的名称。不知道是否以某种方式成功*lo_export* 或其他方法。

在此先感谢您的帮助。

4

1 回答 1

2

PostgreSQL 不会为存储在数据库中的每个大对象创建单独的文件;使用带有 btree 索引的相当普通的堆表。因此,为了便于数据库管理空间,大对象被分成更小的部分,并混合在该表使用的 1GB 段文件中。

快速浏览一下 pg_class 表,我看到一个 pg_largeobject 条目,我认为它是存储所有具有“lo”大对象特征的对象的位置。在我的系统上,我看到 relfilenode 为 11869,这意味着用于存储数据的初始文件将是 11869,后续文件将是 11869.1、11869.2 等。我不知道是否有任何方法可以重新分配 relfilenode大型对象,但您可能应该检查您的 pg_class 条目以确定。

通常,不应访问存储在数据库中的大对象,除非通过提供的“lo”函数。如果您想要单独的文件并能够直接访问它们,您可能应该将它们直接保存到磁盘并存储文件名或 URI。您可以从 PostgreSQL 函数内部或外部将它们保存到磁盘。

于 2012-04-09T03:27:33.300 回答