Postgresql में डेटाबेस की नकल कैसे करें?


17

मुझे मौजूदा डेटाबेस को उसके स्कीमा और संरचना सहित दूसरे नए डेटाबेस में डुप्लिकेट करने की आवश्यकता है। मुझे शेल कमांड के माहौल में इसकी आवश्यकता है, न कि पगडिन में। कृपया मेरी मदद करें।

nohup pg_dump exampledb > example-01.sql
createdb -O postgres exampledbclone_01

मेरा उपयोगकर्ता "पोस्टग्रेज" है

nohup psql exampledbclone_01 < example-01.sql
$ pg_dump mydb > db.sql
$ psql -d newdb -f db.sql

जवाबों:


36

यदि आप इसे उसी PostgreSQL इंस्टॉल के भीतर डुप्लिकेट करना चाहते हैं और आपके पास सक्रिय रूप से कनेक्ट किए गए उपयोगकर्ता नहीं हैं तो एक आसान शॉर्टकट है:

CREATE DATABASE my_new_database TEMPLATE my_old_database;

या शेल से

createdb -T my_old_database my_new_database;

अन्यथा, आपको उपयोग करने की आवश्यकता होगी pg_dump, createdbऔर pg_restore, जैसे

pg_dump -Fc -f olddb.pgdump -d olddb &&\
createdb newdb &&\
pg_restore -d newdb olddb.pgdump

यदि आप उपयोग कर रहे हैं nohupतो कमांड मर नहीं जाता है यदि आप अपना ssh सत्र खो देते हैं, तो screenइसके बजाय का उपयोग करने पर विचार करें ।


1
बहुत बढ़ियाCREATE DATABASE my_new_database TEMPLATE my_old_database;
अंजनिलुबत्त ५०५

1
प्रतिभाशाली! यह न केवल संरचना की नकल करता है, बल्कि डेटा भी!
फोटॉन

@ फ़ोटोन हां, हालांकि आप उपयोग कर सकते हैं pg_dumpऔर pg_restoreयदि आप अधिक संरचना वाले और चयनात्मक (डंप) कहना चाहते हैं।
क्रेग रिंगर

1

नया डेटाबेस बनाते समय पोस्टग्रेज सर्वर पर किसी भी मौजूदा डेटाबेस के उपयोग की अनुमति देता है। मुझे यकीन नहीं है कि pgAdmin आपको create डेटाबेस डायलॉग पर विकल्प देता है, लेकिन आपको क्वेरी विंडो में निम्नलिखित को निष्पादित करने में सक्षम होना चाहिए, यदि यह नहीं है:

CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;

फिर भी, आप प्राप्त कर सकते हैं:

त्रुटि: स्रोत डेटाबेस "ओरिडब" को अन्य उपयोगकर्ताओं द्वारा एक्सेस किया जा रहा है

डेटाबेस से अन्य सभी उपयोगकर्ताओं को डिस्कनेक्ट करने के लिए, आप इस क्वेरी का उपयोग कर सकते हैं:

SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity 
WHERE pg_stat_activity.datname = 'originaldb' AND pid <> pg_backend_pid();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.