sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:van OID naar Bytea

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



  1. Om aanhalingstekens met escapetekens in de MySQL-tabel te vinden en te vervangen

  2. WEBrick rails-server start niet

  3. Hoe meerdere herhaalbare velden als array in de database op te slaan?

  4. In plaats van triggers in mysql