Une autre façon qui ne nécessite pas de fonction personnalisée consiste à utiliser le loread(lo_open(...))
combinaison, comme :
UPDATE user SET pkcs_as_bytea = loread(lo_open(pkcs12_as_oid, 262144), 1000000) WHERE thistable.pkcs12 IS NOT NULL
Il y a un problème avec ce code, le loread
la fonction requiert comme deuxième paramètre le nombre maximum d'octets à lire (le 1000000
paramètre que j'ai utilisé ci-dessus), vous devez donc utiliser un très grand nombre ici si vos données sont volumineuses. Sinon, le contenu sera coupé après ce nombre d'octets et vous ne récupérerez pas toutes les données dans bytea
champ.
Si vous souhaitez convertir un OID en un champ de texte, vous devez également utiliser une fonction de conversion, comme dans :
UPDATE user SET pkcs_as_text = convert_from(loread(lo_open(pkcs12_as_oid, 262144), 1000000), 'UTF8')
(262144
est un drapeau pour le mode ouvert, 40000
en hexa, ce qui signifie "ouvrir en lecture seule")