मौजूदा (लाइव) डेटाबेस की पूरी कॉपी बनाने का सबसे आसान और तेज़ तरीका CREATE DATABASE
एक TEMPLATE
. के साथ
:
CREATE DATABASE mydb_test TEMPLATE mydb;
हालांकि, एक महत्वपूर्ण सीमा है आपकी दूसरी आवश्यकता का उल्लंघन:टेम्पलेट (स्रोत) डेटाबेस में इसके अतिरिक्त कनेक्शन नहीं हो सकते हैं। मैं मैनुअल उद्धृत करता हूं:
यदि आपके पास pg_terminate_backend()
.
अस्थायी रूप से दोबारा जुड़ने की अनुमति देने के लिए, CONNECT
को निरस्त करें विशेषाधिकार
(और GRANT
बाद में वापस)।
REVOKE CONNECT ON DATABASE mydb FROM PUBLIC;
-- while connected to another DB - like the default maintenance DB "postgres"
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'mydb' -- name of prospective template db
AND pid <> pg_backend_pid(); -- don't kill your own session
CREATE DATABASE mydb_test TEMPLATE mydb;
GRANT CONNECT ON DATABASE mydb TO PUBLIC; -- only if they had it before
संस्करणों में पहले पोस्टग्रेज 9.2 procpid
. का उपयोग करें pid
. के बजाय :
संबंधित:
यदि आप समवर्ती सत्रों को समाप्त करने का जोखिम नहीं उठा सकते हैं, तो pg_dump
के आउटपुट को पाइप करके देखें। करने के लिए psql
जैसा कि पहले से ही अन्य उत्तरों द्वारा सुझाया गया है।