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

Konverter en byte-kolonne til OID, mens du beholder værdier

En kolonne af typen Oid er blot en reference til det binære indhold, som faktisk er gemt i systemets pg_largeobject bord. Med hensyn til lagring er en Oid et 4 byte heltal. På den anden side er en kolonne af typen bytea er det faktiske indhold.

For at overføre en bytea til et stort objekt, skal et nyt stort objekt oprettes med den fillignende API af store objekter:lo_create() for at få en ny OID, derefter lo_open() i skrivetilstand, så skriver med lo_write() eller lowrite(), og derefter lo_close().

Dette kan ikke med rimelighed gøres med kun en cast.

Dybest set skal du skrive et ~10 linjers kodestykke på det sprog, du vælger (mindst et, der understøtter det store objekt API, inklusive plpgsql) for at udføre denne konvertering.



  1. Mysql Ugyldigt datetime-format:1292 Forkert datetime-værdi ved oprettelse af nogle dummy-data til test

  2. InterfaceError:Kan ikke erhverve Oracle-miljøhåndtaget; ORACLE_HOME er korrekt, og SQL*Plus vil oprette forbindelse

  3. Hvordan kan du tvinge en funktion i en where-klausul til at udføre én gang i oracle?

  4. Sådan beregnes omsætningen hvert semester