PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Converti una colonna di byte in OID mantenendo i valori

Una colonna di tipo Oid è solo un riferimento al contenuto binario che è effettivamente memorizzato nel pg_largeobject del sistema tavolo. In termini di memoria, un Oid è un numero intero di 4 byte. D'altra parte, una colonna di tipo bytea è i contenuti effettivi.

Per trasferire un byte in un oggetto di grandi dimensioni, è necessario creare un nuovo oggetto di grandi dimensioni con l'API simile a un file di oggetti di grandi dimensioni:lo_create() per ottenere un nuovo OID, quindi lo_open() in modalità di scrittura, quindi scrive con lo_write() o lowrite() e poi lo_close().

Questo non può essere ragionevolmente fatto solo con un cast.

Fondamentalmente, dovresti scrivere un pezzo di codice di circa 10 righe nella lingua di tua scelta (almeno una che supporti l'API per oggetti di grandi dimensioni, incluso plpgsql) per eseguire questa conversione.