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

Мигриране на PostgreSQL text/bytea колона към голям обект?

Защо просто не използвате lo_from_bytea ?

Пример:

SELECT 'test'::text::bytea;
   bytea    
------------
 \x74657374
(1 row)

SELECT lo_from_bytea(0, 'test'::text::bytea);
 lo_from_bytea 
---------------
        274052
(1 row)

SELECT lo_get(274052);
   lo_get   
------------
 \x74657374
(1 row)

Така че, за да преместите действително (по-добре да имате резервно копие) данните от текст към OID, можете да направите следното:

ALTER TABLE mytable ADD COLUMN value_lo OID;
UPDATE mytable SET value_lo = lo_from_bytea(0, value::bytea), value = NULL;
ALTER TABLE mytable DROP COLUMN value;
ALTER TABLE mytable RENAME COLUMN value_lo TO value;

...и накрая, тъй като PostgreSQL е MVCC база данни и не изтрива веднага всички данни, трябва да почистите нещата с VACUUM FULL или CLUSTER .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel:Грешка [PDOException]:Не можа да се намери драйвер в PostgreSQL

  2. PostgreSQL - групиране по jsonb колона

  3. Извличане на записи, които са различни от нула след десетичната запетая в PostgreSQL

  4. Предайте множество набори или масиви от стойности към функция

  5. Как да проверите дали таблица съществува в дадена схема