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

एक उत्पादन से एक परीक्षण डेटाबेस को एक ही क्रिया में कैसे क्लोन करें?

मौजूदा (लाइव) डेटाबेस की पूरी कॉपी बनाने का सबसे आसान और तेज़ तरीका 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 जैसा कि पहले से ही अन्य उत्तरों द्वारा सुझाया गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सिम्फनी/सिद्धांत:यूनिक्स सॉकेट के साथ सिद्धांत को कैसे काम करना है?

  2. बहुविकल्पीय प्रश्नों के लिए django प्रश्नोत्तरी ऐप मॉडल

  3. प्रोग्रामेटिक रूप से एक पोस्टग्रेएसक्यूएल डेटाबेस बनाएं

  4. हाइबरनेट नेटिव क्वेरी में एक अशक्त तिथि कैसे डाली जाए?

  5. पोस्टग्रेएसक्यूएल में बच गए यूनिकोड चरित्र को वास्तविक चरित्र में कनवर्ट करें