PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL टेक्स्ट/बाइटा कॉलम को बड़ी वस्तु पर माइग्रेट करें?

क्यों न केवल 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. PostgreSQL में JSONB मान मर्ज करना?

  2. सी ++ का उपयोग कर libpq के साथ त्रुटि लिंक करें

  3. IF-THEN-ELSE कथन postgresql में

  4. साधारण Postgresql कथन - स्तंभ नाम मौजूद नहीं है

  5. Sqlalchemy डुप्लिकेट WHERE क्लॉज टू FROM