0

私はほとんど疑いがありません、私は私のデータベースにタイプoidのフィールドを持っています私はテキストファイルを保存しています、私はあなたがファイルを保存した名前をどうにかして取得できるかどうか疑問に思います。なんらかの方法で*lo_export*または別の方法で正常に実行できるかどうかわからない。

助けてくれてありがとう。

4

1 に答える 1

2

PostgreSQLは、データベースに格納されている大きなオブジェクトごとに個別のファイルを作成しません。btreeインデックスを持つかなり通常のヒープテーブルが使用されます。そのため、データベースによるスペース管理を容易にするために、大きなオブジェクトは小さな断片に分割され、そのテーブルで使用される1GBのセグメントファイル内に混在します。

pg_classテーブルをざっと見てみると、pg_largeobjectのエントリがあります。これは、「lo」ラージオブジェクト機能で格納されているすべてのオブジェクトが格納されている場所だと思います。私のシステムでは、11869のrelfilenodeが表示されます。これは、データを格納するための最初のファイルが11869で、後続のファイルが11869.1、11869.2などであることを意味します。大きなオブジェクトですが、おそらくpg_classエントリをチェックして確認する必要があります。

一般に、データベースに格納されている大きなオブジェクトには、提供されている「lo」関数を使用する場合を除いて、アクセスしないでください。個別のファイルとそれらに直接アクセスする機能が必要な場合は、おそらくそれらをディスクに直接保存し、ファイル名またはURIを保存する必要があります。PostgreSQL関数の内部から、または外部からディスクに保存できます。

于 2012-04-09T03:27:33.300 に答える