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

सार्वजनिक स्कीमा को विभिन्न स्कीमा में कैसे पुनर्स्थापित करें

@ टोमेट्ज़की का समाधान बिल्कुल सही नहीं है, कम से कम 9.2 के pg_dump के साथ . यह नए स्कीमा में तालिका बनाएगा, लेकिन pg_dump स्कीमा-योग्यता ALTER TABLE ... OWNER TO बयान, इसलिए वे विफल हो जाएंगे:

postgres=# CREATE DATABASE demo;
\cCREATE DATABASE
postgres=# \c demo
You are now connected to database "demo" as user "postgres".
demo=# CREATE TABLE public.test ( dummy text );
CREATE TABLE
demo=# \d
        List of relations
 Schema | Name | Type  |  Owner   
--------+------+-------+----------
 public | test | table | postgres
(1 row)
demo=# \q
$
$ pg_dump -U postgres -f demo.sql demo
$ sed -i 's/^SET search_path = public, pg_catalog;$/SET search_path = testschema, pg_catalog;/' demo.sql
$ grep testschema demo.sql 
SET search_path = testschema, pg_catalog;
$ dropdb -U postgres demo
$ createdb -U postgres demo
$ psql -U postgres -c 'CREATE SCHEMA testschema;' demo
CREATE SCHEMA
$ psql -U postgres -f demo.sql -v ON_ERROR_STOP=1 -v QUIET=1 demo
psql:demo.sql:40: ERROR:  relation "public.test" does not exist
$ psql demo
demo=> \d testschema.test 
  Table "testschema.test"
 Column | Type | Modifiers 
--------+------+-----------
 dummy  | text | 

आपको public.test . पर स्कीमा-योग्यता को हटाने के लिए डंप को संपादित करने की भी आवश्यकता होगी या इसे नए स्कीमा नाम में बदलें। sed इसके लिए एक उपयोगी उपकरण है।

मैं शपथ ले सकता था कि ऐसा करने का सही तरीका pg_dump -Fc -n public -f dump.dbbackup था। फिर pg_restore एक नई स्कीमा में, लेकिन मुझे यह पता नहीं लग रहा है कि अभी कैसे ठीक है।

अपडेट करें:नहीं, ऐसा लगता है कि sed आपकी सबसे अच्छी शर्त है। देखें



  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 मान सेट करने के लिए ट्रिगर डालें

  2. पोस्टग्रेएसक्यूएल के लिए डिजास्टर रिकवरी विकल्प हाइब्रिड क्लाउड पर तैनात

  3. Django पूर्ण पाठ खोज अनुकूलन - पोस्टग्रेज

  4. क्वेरी का उपयोग करके माता-पिता को पुनरावर्ती रूप से खोजें

  5. Oracle से PostgreSQL:ANSI बाहरी PostgreSQL में सिंटैक्स में शामिल हों