sql >> Database >  >> RDS >> PostgreSQL

Converteer een bytea-kolom naar OID met behoud van waarden

Een kolom van het type Oid is slechts een verwijzing naar de binaire inhoud die daadwerkelijk is opgeslagen in het pg_largeobject van het systeem tafel. In termen van opslag is een Oid een geheel getal van 4 bytes. Anderzijds is een kolom van het type bytea is de werkelijke inhoud.

Om een ​​bytea naar een groot object over te zetten, moet een nieuw groot object worden gemaakt met de bestandsachtige API van grote objecten:lo_create() om een ​​nieuwe OID te krijgen, dan lo_open() in de schrijfmodus, en dan schrijft met lo_write() of lowrite(), en dan lo_close().

Dit kan redelijkerwijs niet worden gedaan met slechts een cast.

In principe zou u een stuk code van ~10 regels moeten schrijven in de taal van uw keuze (ten minste één die de grote object-API ondersteunt, inclusief plpgsql) om deze conversie uit te voeren.



  1. Hoe verbinding maken met MySQL DB als container in docker?

  2. Herstelapparaat zonder gegevensverlies

  3. SUM() Functie in MariaDB

  4. Vergelijk twee strings in MySQL