sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL:fra OID til Bytea

En anden måde, som ikke kræver en brugerdefineret funktion, er at bruge loread(lo_open(...)) kombination, som:

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

Der er et problem med denne kode, loread Funktionen kræver som den anden parameter det maksimale antal bytes at læse (1000000 parameter, jeg brugte ovenfor), så du skal bruge et rigtig stort tal her, hvis dine data er store. Ellers vil indholdet blive trimmet efter så mange bytes, og du får ikke alle data tilbage i bytea felt.

Hvis du vil konvertere fra OID til et tekstfelt, skal du også bruge en konverteringsfunktion, som i:

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

(262144 er et flag for åben tilstand, 40000 i hexa, hvilket betyder "åben skrivebeskyttet")



  1. MySQL LIKE %string% ikke helt tilgivende nok. Noget andet jeg kan bruge?

  2. Oracle-tekst undslipper med krøllede seler og jokertegn

  3. ISDATE() Eksempler i SQL Server

  4. Sådan vælges og sorteres efter kolonner, der ikke er i Groupy By SQL-sætning - Oracle