web-dev-qa-db-ja.com

ラージオブジェクト(LOB)の内容を表示する方法

どうすればLOBの内容を確認できますか?

\d ticketgrantingticket

              Table "public.ticketgrantingticket"
          Column           |          Type          | Modifiers 
---------------------------+------------------------+-----------
id                         | character varying(765) | not null
number_of_times_used       | numeric(10,0)          | 
creation_time              | numeric(19,0)          | 
last_time_used             | numeric(19,0)          | 
previous_last_time_used    | numeric(19,0)          | 
ticketgrantingticket_id    | character varying(765) | 
expiration_policy          | oid                    | 
authentication             | oid                    | 
services_granted_access_to | oid                    | 
expired                    | boolean                | 
proxied_by                 | character varying(1)   | 
Indexes:
    "ticketgrantingticket_pkey" PRIMARY KEY, btree (id)

SELECT expiration_policy, 
       authentication, 
       services_granted_access_to 
FROM ticketgrantingticket LIMIT 2;

 expiration_policy | authentication | services_granted_access_to 
-------------------+----------------+----------------------------
           1165742 |        1165743 |                    1165744
           1165757 |        1165758 |                    1165759
(2 rows)

これはデフォルトでそれらの数を示します。

私はこれまでに this を見つけましたが、これはどういうわけかクライアントで適切に機能していないと思います:

SELECT expiration_policy, 
       encode(authentication::bytea, 'escape'),
       services_granted_access_to 
FROM ticketgrantingticket LIMIT 2;

ERROR:  cannot cast type oid to bytea
LINE 1: SELECT expiration_policy, encode(authentication::bytea, 'esc...

PgAdmin IIIでも同じことがわかります。

IINM oidはラージオブジェクト参照として使用できるため、そこにblobがあることを期待しています。 oidを使用しているのは、自分が何をしているのかわからないためです。これまでのところ、これらの3つの列の1つが安全かつ収益性の高い方法でbyteaに変換されると評価しましたが、ソース(postgres以外)システムで他の2つの列の内容をスパイできないため、この(postgres)ターゲットシステムでそれらをスパイします。

3
48347

私は走った

SELECT expiration_policy, lo_get(authentication), services_granted_access_to 
FROM ticketgrantingticket
LIMIT 2;

読んだ後 https://www.postgresql.org/docs/current/static/lo-funcs.html 廃止されたコメントによって提案されました。うまくいきました。

5
48347

この質問は終了間近なので、Andriy Mと他のいくつかから提供されたリンクを貼り付けます。

大きなオブジェクトは難解なものです。それらはあなたがそれらの内部を探すことを可能にします。通常、PostGISでのラスターサポートのように、それらの上にシステムを構築します。補足として、psqlにはいくつかのヘルパーがあります。

\dl                    list large objects, same as \lo_list
\lo_export LOBOID FILE
\lo_import FILE [COMMENT]
\lo_list
\lo_unlink LOBOID      large object operations

これらは、クライアント側の関数関数として使用できる関数です。

4
Evan Carroll