Psql में डेटाबेस कैसे स्विच करें?


1081

में MySQL , मैं प्रयोग किया जाता हैuse database_name;

क्या psqlसमतुल्य है?


1
ठीक है, तो इस बारे में है psql, PostgreSQL के लिए फ्रंट-एंड?
पीटर मोर्टेंसन

जवाबों:


1655

PostgreSQL में, आप \connectक्लाइंट टूल psql के मेटा-कमांड का उपयोग कर सकते हैं :

\connect DBNAME

या संक्षेप में:

\c DBNAME

126
+1: यह सिर्फ एक psql कमांड है, पोस्टग्रेज में ही, "स्विच" करने का कोई तरीका नहीं है। वास्तव में, Psql MySQL के संदर्भ में "स्विचिंग" नहीं कर रहा है, बस एक कनेक्शन को बंद कर रहा है और दूसरा खोल रहा है।
rfusca

12
तो एसक्यूएल के साथ ऐसा करने का कोई मौका नहीं है?
बोरिज़

5
तो क्या यह एसक्यूएल बयानों के बीच एक .sqlफ़ाइल में काम कर सकता है ? उदाहरण के लिए मैं इसके CREATE DATABASE mydb;बाद हो सकता है \connect mydb?
J86

1
@Ciwan मुझे पूरा यकीन है कि आप psqlSQL स्क्रिप्ट फ़ाइल में कमांड शामिल नहीं कर सकते ।
केनी एविट

183

आप के साथ \c <database>या डेटाबेस से कनेक्ट कर सकते हैं \connect <database>



31

आप psql के साथ कनेक्ट करते समय डेटाबेस का चयन कर सकते हैं। स्क्रिप्ट से इसका उपयोग करते समय यह आसान है:

sudo -u postgres psql -c "CREATE SCHEMA test AUTHORIZATION test;" test

4
धन्यवाद, मैं पागल हो रहा था ... :)
रिचर्ड

10

\lडेटाबेस के \cलिए डेटाबेसनाम \dfविशेष डेटाबेस में संग्रहीत प्रक्रियाओं के लिए db पर स्विच करने के लिए



7

अपने पोस्टग्रेएसडी आरडीएमएस के अंदर रहने वाले विभिन्न डेटाबेस पर स्विच करने के लिए नीचे दिए गए विवरण का उपयोग करें

\c databaseName

1

यदि आप स्टार्टअप पर एक विशिष्ट डेटाबेस पर स्विच करना चाहते हैं, तो प्रयास करें

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql vigneshdb;

डिफ़ॉल्ट रूप से, Postgres पोर्ट 5432 पर चलता है। यदि यह दूसरे पर चलता है, तो कमांड लाइन में पोर्ट को पास करना सुनिश्चित करें।

/Applications/Postgres.app/Contents/Versions/9.5/bin/psql -p2345 vigneshdb;

एक साधारण उपनाम से, हम इसे आसान बना सकते हैं।

अपने .bashrcया में एक उपनाम बनाएँ.bash_profile

function psql()
{
    db=vigneshdb
    if [ "$1" != ""]; then
            db=$1
    fi
    /Applications/Postgres.app/Contents/Versions/9.5/bin/psql -p5432 $1
}

psqlकमांड लाइन में चलाएं , यह डिफ़ॉल्ट डेटाबेस पर जाएगा; psql anotherdb, यह स्टार्टअप पर नाम के साथ db पर स्विच करेगा, स्टार्टअप पर।


1

हालांकि प्रश्न में स्पष्ट रूप से नहीं कहा गया है, उद्देश्य एक विशिष्ट स्कीमा / डेटाबेस से कनेक्ट करना है।

एक अन्य विकल्प स्कीमा से सीधे जुड़ना है। उदाहरण:

sudo -u postgres psql -d my_database_name

स्रोत से man psql:

-d dbname
--dbname=dbname
   Specifies the name of the database to connect to. This is equivalent to specifying dbname as the first non-option argument on the command line.

   If this parameter contains an = sign or starts with a valid URI prefix (postgresql:// or postgres://), it is treated as a conninfo string. See Section 31.1.1, Connection Strings”, in the
   documentation for more information.

1

आप निम्न के साथ एक अलग रोल के साथ एक डेटाबेस से भी जुड़ सकते हैं।

\connect DBNAME ROLENAME;

या

\c DBNAME ROLENAME;

0

आप का उपयोग कर कनेक्ट कर सकते हैं

\ c dbname

यदि आप POSTGRESQL या SQL के लिए सभी संभावित आदेश देखना चाहते हैं, तो निम्न चरणों का पालन करें:

  1. रेलबोक्सोल (आप अपने वर्तमान ईएनवी डेटाबेस में पुनः वितरित किया जाएगा)

  2. \? (POSTGRESQL आदेशों के लिए)

या

  1. \ h (SQL कमांड के लिए)

  2. प्रेस क्यू से बाहर निकलें


-11

जैसा कि अन्य उत्तरों में बताया गया है, आपको एक अलग डेटाबेस का उपयोग करने के लिए कनेक्शन बदलने की आवश्यकता है।

पोस्टग्रेट्स स्कीमा के साथ काम करता है। आपके पास एक ही डेटाबेस में कई योजनाएं हो सकती हैं। इसलिए, यदि आप एक ही डेटाबेस के भीतर काम कर रहे हैं, और स्कीमा बदलना चाहते हैं, तो आप कर सकते हैं:

SET SCHEMA 'schema_name';


9
ये गलत है। यह केवल खोज पथ में उपयोग किए गए स्कीमा को बदल देगा। एक डेटाबेस में कई स्कीमा टा होते हैं।
सभी कार्यकर्ता

@cpburnz मैं आपसे सहमत हूँ
MangEngkus

1
@ Cpburnz की टिप्पणी के अलावा, SET SCHEMAका उपयोग SET SCHEMA 'schema_name'नहीं किया जाता है SET SCHEMA 'database_name'। तो यह एक SQL तरीका है स्कीमा नहीं डेटाबेस को बदलने के लिए। इसके अलावा यह भी इसी तरह है SET search_path TO schema_nameयहाँ या यहाँ प्रलेखन देखें ।
इब्राहिम डूडा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.