Dove pg_lo_write memorizza i suoi contenuti?
-
05-07-2019 - |
Domanda
Esiste una funzione nel nostro sistema che scrive un file in un BLOB postgres, la funzione è pg_lo_write
, il nostro sistema utilizza PHP, ADODB e PostgreSQL.
Quello che vorrei sapere è dove sono archiviati questi dati, è un file in una directory postgres, in una tabella?
Mille grazie!
Informazioni sulla risposta
Grazie a Ben Fransen per la risposta, il BLOB è in effetti memorizzato nella tabella pg_largeobject
. Sto usando pgAdmin e la tabella è nascosta alla vista, tuttavia è possibile accedervi utilizzando una query.
SELECT * FROM pg_largeobject WHERE LOID = 123456
Soluzione
Correggimi se sbaglio, ma per quanto ne so quando stai memorizzando i file in un database, questi vengono archiviati come dati binari. Il valore binario del file è memorizzato nel campo BLOB. Quando si tenta di ottenere quel file, il valore binario viene quindi ricostruito nel file originale.
Altri suggerimenti
Per riferimento futuro le sezioni pertinenti nel manuale PostgreSQL:
Capitolo 31. Grandi oggetti, 31.2. Funzionalità di implementazione .