PostgreSQL में सभी स्कीमा कैसे सूचीबद्ध करूँ?


239

PostgreSQL v9.1 का उपयोग करते समय, मैं SQL का उपयोग करके सभी स्कीमाओं को कैसे सूचीबद्ध करूं?

मैं कुछ लाइनों के साथ उम्मीद कर रहा था:

SELECT something FROM pg_blah;

जवाबों:


258

सभी स्कीमा को सूचीबद्ध करने के लिए, (ANSI) मानक INFORMATION_SCHEMA का उपयोग करें

select schema_name
from information_schema.schemata;

मैनुअल में अधिक जानकारी

वैकल्पिक रूप से:

select nspname
from pg_catalog.pg_namespace;

मैनुअल में pg_catalog के बारे में अधिक जानकारी


249

psqlकमांड लाइन का उपयोग करते समय , आप कमांड के साथ सभी स्कीमा को सूचीबद्ध कर सकते हैं \dn


धन्यवाद। यह अच्छा होगा कि बस स्कीमा \ dn द्वारा लौट आए, लेकिन इस मामले में मैं एक बूटस्ट्रैप ऐप लिख रहा हूं जो libpq / libpqxx का उपयोग करके जोड़ता है, इसलिए मेरे पास सीएलआई एक्सेस नहीं है।
स्टीफन

1
क्या कर रहे हैं , स्कीमा कि \dn, सूचीबद्ध करता है के रूप में तालिकाओं के लिए विरोध \dtको सूचीबद्ध करता है?
टॉमी

8
@ टॉमी \dtसार्वजनिक स्कीमा के लिए तालिकाओं को सूचीबद्ध करता है। सभी स्कीमाओं के तालिकाओं का उपयोग करने के लिए \dt *.*और एक विशेष स्कीमा उपयोग के लिए \dt schema_name.*
गंभीर

@ टॉमी, स्कीमा नामस्थान हैं: आपके पास अलग-अलग नामस्थानों में समान नाम वाली अलग-अलग तालिकाएँ हो सकती हैं।
8

38

Psql कमांड से कनेक्ट करें -> psql --u {userName} {DBName} फिर आप डीबी में कितने स्कीमा मौजूद हैं यह जांचने के लिए नीचे कमांड टाइप कर सकते हैं

DBName=# \dn

और आप आसानी से नीचे के चरणों द्वारा वाक्यविन्यास की जाँच कर सकते हैं-

  1. DB को जोड़ने के बाद, दबाएं

    DBName=# help

आपको निम्न विकल्प मिलेंगे:

आप Psgl, PostgreSQL के कमांड-लाइन इंटरफ़ेस का उपयोग कर रहे हैं।
टाइप करें: \
SQL कमांड के साथ मदद के लिए वितरण शर्तों के लिए कॉपीराइट \
\? psql कमांड
\ g की सहायता के लिए या अर्धविराम के साथ समाप्त करने के लिए क्वेरी
\ q निष्पादित करने के लिए छोड़ दें

फिर दबायें

DBName=# \?

आपको सभी विकल्प बहुत आसानी से मिल जाएंगे।


9

पोस्टिंग की शुरुआत 9.3 पर, एक ट्रिक जो आप पोस्टगर्ल्स में कर सकते हैं, वह psql में सूचनात्मक कमांड (जैसे कि \ d, \ du, \ dp, आदि) का सटीक sql प्राप्त करने के लिए उपयोग कर सकता है। यहाँ कैसे चाल है। एक पोस्ट सत्र खोलें, फिर अपना कमांड टाइप करें:

begin;
\dn+

लेन-देन अभी भी चल रहा है, एक और पोस्टग्रैज सत्र खोलें, और pg_stat_activity क्वेरी करें और आप सटीक sql प्राप्त कर सकते हैं।

postgres=# select query from pg_stat_activity ;
                                 query                                 
-----------------------------------------------------------------------
 SELECT n.nspname AS "Name",                                          +
   pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner",                 +
   pg_catalog.array_to_string(n.nspacl, E'\n') AS "Access privileges",+
   pg_catalog.obj_description(n.oid, 'pg_namespace') AS "Description" +
 FROM pg_catalog.pg_namespace n                                       +
 WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'      +
 ORDER BY 1;

12
आपको इसे छल करने की आवश्यकता नहीं है; सिर्फ रन\set ECHO_HIDDEN on
निक बार्न्स

8
या इसे चलाएंpsql -E
इवान कैरोल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.