sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL:från OID till Bytea

Ett annat sätt som inte kräver en anpassad funktion är att använda loread(lo_open(...)) kombination, som:

UPDATE user SET pkcs_as_bytea = loread(lo_open(pkcs12_as_oid, 262144), 1000000) WHERE thistable.pkcs12 IS NOT NULL

Det finns ett problem med den här koden, loread Funktionen kräver som den andra parametern det maximala antalet byte att läsa (1000000 parameter som jag använde ovan), så du bör använda ett riktigt stort antal här om din data är stor. Annars kommer innehållet att trimmas efter så många byte, och du får inte tillbaka all data till bytea fältet.

Om du vill konvertera från OID till ett textfält bör du också använda en konverteringsfunktion, som i:

UPDATE user SET pkcs_as_text = convert_from(loread(lo_open(pkcs12_as_oid, 262144), 1000000), 'UTF8')

(262144 är en flagga för öppet läge, 40000 i hexa, vilket betyder "öppen skrivskyddad")



  1. serverns tidszonsvärde "CDT" är okänt eller representerar mer än en tidszon

  2. Hur man automatiskt tar bort poster i sql-server efter en viss tid

  3. Hur ansluter jag till MySQL Database?

  4. Java - Hur konverterar man data från mysql-databas till en JSON-array?