PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Konvertieren Sie eine Bytea-Spalte in OID, während Sie die Werte beibehalten

Eine Spalte vom Typ Oid ist nur ein Verweis auf die binären Inhalte, die tatsächlich im pg_largeobject des Systems gespeichert sind Tisch. In Bezug auf die Speicherung ist eine Oid eine 4-Byte-Ganzzahl. Andererseits ist eine Spalte vom Typ Bytea ist der eigentliche Inhalt.

Um ein Bytea in ein großes Objekt zu übertragen, sollte ein neues großes Objekt mit der dateiähnlichen API von großen Objekten erstellt werden:lo_create(), um eine neue OID zu erhalten, dann lo_open() im Schreibmodus, dann schreibt mit lo_write() oder lowrite() und dann lo_close().

Dies kann vernünftigerweise nicht nur mit einer Besetzung erreicht werden.

Im Grunde müssten Sie für diese Konvertierung etwa 10 Zeilen Code in der Sprache Ihrer Wahl schreiben (mindestens eine, die die API für große Objekte, einschließlich plpgsql, unterstützt).