どうすれば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)ターゲットシステムでそれらをスパイします。
私は走った
SELECT expiration_policy, lo_get(authentication), services_granted_access_to
FROM ticketgrantingticket
LIMIT 2;
読んだ後 https://www.postgresql.org/docs/current/static/lo-funcs.html 廃止されたコメントによって提案されました。うまくいきました。
この質問は終了間近なので、Andriy Mと他のいくつかから提供されたリンクを貼り付けます。
lo
大きなオブジェクトは難解なものです。それらはあなたがそれらの内部を探すことを可能にします。通常、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
これらは、クライアント側の関数関数として使用できる関数です。