sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL:od OID po Bytea

Dalším způsobem, který nevyžaduje vlastní funkci, je použití loread(lo_open(...)) kombinace, jako:

UPDATE user SET pkcs_as_bytea = loread(lo_open(pkcs12_as_oid, 262144), 1000000) WHERE thistable.pkcs12 IS NOT NULL

S tímto kódem je problém, loread funkce vyžaduje jako druhý parametr maximální počet bajtů ke čtení (1000000 parametr, který jsem použil výše), takže pokud jsou vaše data velká, měli byste zde použít opravdu velké číslo. V opačném případě bude obsah oříznut po tomto počtu bajtů a všechna data nedostanete zpět do bytea pole.

Pokud chcete převést z OID na textové pole, měli byste také použít funkci převodu, jako v:

UPDATE user SET pkcs_as_text = convert_from(loread(lo_open(pkcs12_as_oid, 262144), 1000000), 'UTF8')

(262144 je příznak pro otevřený režim, 40000 v hexa, což znamená "otevřeno pouze pro čtení")



  1. Oracle a Left Outer Join

  2. Předávání pole do uložené procedury serveru SQL

  3. MySQL + htaccess mod_rewrite?

  4. MySQL. WordPress. Pomalý dotaz při použití příkazů IN