PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Migrasi kolom teks/bytea PostgreSQL ke objek besar?

Mengapa tidak menggunakan lo_from_bytea ?

Contoh:

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)

Jadi, untuk benar-benar memindahkan (lebih baik Anda memiliki cadangan) data dari teks ke OID, Anda dapat melakukan hal berikut:

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;

...dan akhirnya, karena PostgreSQL adalah database MVCC dan tidak segera menghapus semua data, Anda harus membersihkan semuanya dengan VACUUM FULL atau 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. Dapatkan tanggal pertama bulan di postgres

  2. Tortoise ORM untuk Python tidak ada hubungan pengembalian entitas (Pyndantic, FastAPI)

  3. Lihat kesalahan di PostgreSQL

  4. ekstrak tanggal dari stempel waktu di postgreSQL

  5. Bagaimana saya bisa mengatur batasan tabel yang awalnya ditangguhkan dalam model Django?