5

大きなオブジェクトにデータがあります。元のオブジェクトのコピーを保持しながら追加できるように、そのコピーを作成したいと考えています。これを発生させるために使用できる JDBC 呼び出しまたは SQL ステートメントはありますか?

私が見つけたすべてのリソースから、実際にすべてのデータをクライアントに読み取り、コピーを取得するために再度書き出す必要があるようです。往復を節約したいと思います。

4

2 に答える 2

4

大きなオブジェクトは、その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 リファレンス
オブジェクト型識別子 (oid) リファレンス

于 2015-05-06T15:40:45.470 に答える
1

サーバー側のlo_import関数とlo_export関数を見てください。データをデータベースからファイルシステムに移動してから元に戻す必要がありますが、少なくともそれはサーバーのファイルシステムであり、クライアントのファイルシステムではありません。

于 2011-03-01T17:26:50.480 に答える