Een andere manier die geen aangepaste functie vereist, is door de loread(lo_open(...))
te gebruiken combinatie, zoals:
UPDATE user SET pkcs_as_bytea = loread(lo_open(pkcs12_as_oid, 262144), 1000000) WHERE thistable.pkcs12 IS NOT NULL
Er is een probleem met deze code, de loread
functie vereist als tweede parameter het maximale aantal te lezen bytes (de 1000000
parameter die ik hierboven heb gebruikt), dus je zou hier een heel groot getal moeten gebruiken als je gegevens groot zijn. Anders wordt de inhoud na zoveel bytes bijgesneden en krijgt u niet alle gegevens terug in de bytea
veld.
Als u van OID naar een tekstveld wilt converteren, moet u ook een conversiefunctie gebruiken, zoals in:
UPDATE user SET pkcs_as_text = convert_from(loread(lo_open(pkcs12_as_oid, 262144), 1000000), 'UTF8')
(262144
is een vlag voor de open modus, 40000
in hexa, wat betekent "alleen-lezen openen")