PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL:от OID до Bytea

Друг начин, който не изисква персонализирана функция, е да използвате loread(lo_open(...)) комбинация, като:

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

Има проблем с този код, loread функцията изисква като втори параметър максималния брой байтове за четене (1000000 параметър, който използвах по-горе), така че трябва да използвате наистина голямо число тук, ако данните ви са големи. В противен случай съдържанието ще бъде съкратено след толкова байта и няма да получите всички данни обратно в bytea поле.

Ако искате да преобразувате от OID в текстово поле, трябва също да използвате функция за преобразуване, както в:

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

(262144 е флаг за отворен режим, 40000 в hexa, което означава "отворено само за четене")



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Конвертирайте postgresql hstore в php масив

  2. Получаване на NoSuchMethodError:javax.persistence.Table.indexes() при изпълнение на JPA заявка

  3. Изчисляване на процента игра отново на следващия ден

  4. PostgreSQL 9.3:Как да вмъкнете UUID с главни букви в таблицата

  5. Postgresql Array Functions с QueryDSL