web-dev-qa-db-fra.com

Comment afficher le contenu des grands objets (LOB)?

Comment pourrais-je avoir un aperçu du contenu du 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)

Cela montre ces chiffres par défaut.

Jusqu'à présent, j'ai trouvé this qui, je pense, ne fonctionne pas correctement dans mon client:

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...

Je peux voir la même chose dans pgAdmin III.

Je m'attends à des blobs car IINM oid peut être utilisé comme une grande référence d'objet. Nous utilisons oid parce que nous ne savons pas ce que nous faisions. Jusqu'à présent, j'ai évalué qu'une de ces trois colonnes serait convertie en toute sécurité et de manière rentable en bytea, mais je n'arrive pas à espionner le contenu des deux autres colonnes dans le système source (non postgres), donc je décide de les espionner dans ce système cible (postgres).

3
48347

L'Iran

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

après avoir lu https://www.postgresql.org/docs/current/static/lo-funcs.html suggéré par un commentaire désormais disparu. Ça a marché.

5
48347

Étant donné que cette question touche à sa fin, je vais coller les liens fournis par Andriy M et quelques autres.

Les gros objets sont un peu ésotériques. Ils vous permettent de chercher à l'intérieur d'eux. Habituellement, vous créez des systèmes par-dessus, comme la prise en charge de Raster dans PostGIS. En remarque, psql a quelques assistants.

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

Ce sont à peu près les fonctions disponibles en tant que fonctions côté client.

4
Evan Carroll