2014-07-15 3 views
8

मेरे पास एक postgresql डीबी सर्वर है जिसमें इसमें एकाधिक डेटाबेस हैं। एक बनाएँ डाटाबेस बयान सहित - -CREATE DATABASE कमांड को शामिल करने के लिए pg_dump -s कैसे प्राप्त करें?

postgres=# \list 
           List of databases 
    Name  | Owner | Encoding | Collate | Ctype | Access privileges 
--------------+----------+-----------+---------+-------+----------------------- 
test1  | postgres | UTF8  | C  | C  | 
test2  | postgres | SQL_ASCII | C  | C  | 
test3  | postgres | SQL_ASCII | C  | C  | 
test4  | postgres | SQL_ASCII | C  | C  | 
template0 | postgres | SQL_ASCII | C  | C  | =c/postgres   + 
       |   |   |   |  | postgres=CTc/postgres 
template1 | postgres | SQL_ASCII | C  | C  | postgres=CTc/postgres+ 
       |   |   |   |  | =c/postgres 
(6 rows) 

मैं एक डंप फ़ाइल कि स्कीमा शामिल बनाने के लिए कोई तरीका होना चाहिए मैं डंप करने के लिए कोशिश कर रहा हूँ डेटाबेस के लिए।

अब तक, मैं समझ गए होंगे कि:

pg_dump -s -U postgres -d test1 > test1_only.sql 

सिर्फ test1 डेटाबेस के लिए स्कीमा निर्माण करेंगे, लेकिन इसे बनाने के डेटाबेस आदेश शामिल नहीं है।

pg_dumpall -s -U postgres > /schema_alldatabases.sql 

सभी डेटाबेस के लिए स्कीमा डंप हो जाएगा: एक ही रास्ता मैं प्रकट करने के लिए बनाएँ डेटाबेस आदेश प्राप्त करने में सक्षम था करने के लिए किया गया था। लेकिन इसके बाद सभी डेटाबेस के लिए सभी स्कीमा शामिल हैं। सर्वर पर जो मैं इस फ़ाइल को पुनर्स्थापित करने जा रहा हूं, मेरे पास पहले से test3 और test4 है ... और मैं उन्हें ओवरराइट नहीं करना चाहता, क्योंकि स्कीमा अलग हैं।

क्या कोई भी तरीका है pg_dump -s कमांड को CREATE DATABASE कमांड शामिल है? या, क्या मुझे बस pg_dumpall का उपयोग करना चाहिए और मैं जो बहाल करता हूं उसे नियंत्रित करता हूं? यदि हां, तो क्या आप मुझे दिखा सकते हैं कि मैं डंप फ़ाइल से test1 को कैसे पुनर्स्थापित कर सकता हूं?

धन्यवाद।

उत्तर

10

उपयोग --create या -C विकल्प

pg_dump --create -s -U postgres -d test1 > test1_only.sql 

एक आदेश के साथ उत्पादन शुरू डेटाबेस खुद बना सकते हैं और बनाए गए डेटाबेस से पुन: कनेक्ट करने के लिए। (इस फ़ॉर्म की एक स्क्रिप्ट के साथ, इससे कोई फ़र्क नहीं पड़ता कि गंतव्य इंस्टॉलेशन में कौन सा डेटाबेस आप स्क्रिप्ट चलाने से पहले कनेक्ट करते हैं।) यदि --clean भी निर्दिष्ट है, तो स्क्रिप्ट ड्रॉप करने से पहले लक्ष्य डेटाबेस को छोड़ देता है और पुन: प्रयास करता है।

http://www.postgresql.org/docs/current/static/app-pgdump.html

संबंधित मुद्दे