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")