Otra forma que no requiere una función personalizada es usar loread(lo_open(...))
combinación, como:
UPDATE user SET pkcs_as_bytea = loread(lo_open(pkcs12_as_oid, 262144), 1000000) WHERE thistable.pkcs12 IS NOT NULL
Hay un problema con este código, el loread
requiere como segundo parámetro el número máximo de bytes a leer (el 1000000
parámetro que usé anteriormente), por lo que debe usar un número realmente grande aquí si sus datos son grandes. De lo contrario, el contenido se recortará después de esta cantidad de bytes y no obtendrá todos los datos nuevamente en el bytea
campo.
Si desea convertir de OID a un campo de texto, también debe usar una función de conversión, como en:
UPDATE user SET pkcs_as_text = convert_from(loread(lo_open(pkcs12_as_oid, 262144), 1000000), 'UTF8')
(262144
es una bandera para el modo abierto, 40000
en hexa, lo que significa "abierto de solo lectura")