PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL:od OID do Bajta

Innym sposobem, który nie wymaga funkcji niestandardowej, jest użycie loread(lo_open(...)) kombinacja, jak:

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

Wystąpił problem z tym kodem, loread funkcja wymaga jako drugiego parametru maksymalnej liczby bajtów do odczytania (1000000 parametr, którego użyłem powyżej), więc powinieneś użyć naprawdę dużej liczby tutaj, jeśli twoje dane są duże. W przeciwnym razie zawartość zostanie przycięta po tylu bajtach i nie odzyskasz wszystkich danych z powrotem do bytea pole.

Jeśli chcesz przekonwertować z OID na pole tekstowe, powinieneś również użyć funkcji konwersji, jak w:

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

(262144 jest flagą trybu otwartego, 40000 w szesnastce, co oznacza „otwarty tylko do odczytu”)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dynamiczna nazwa tabeli w postgreSQL 9.3

  2. Postgresql znajduje całkowitą przestrzeń dyskową używaną przez bazę danych

  3. Zwróć wartości kolumn sprzed UPDATE, używając tylko SQL

  4. PostgreSQL jak połączyć wartość interwału '2 dni'

  5. Ściągawka wydajnościowa dla PostgreSQL