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


148

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

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

SELECT something FROM pg_blah;
156

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

select schema_name
from information_schema.schemata

मैनुअल में अधिक जानकारी: http://www.postgresql.org/docs/current/static/information-schema.html

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

select nspname
from pg_catalog.pg_namespace;

मैनुअल में pg_catalog के बारे में अधिक जानकारी: http://www.postgresql.org/docs/current/static/catalogs.html


165

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

  0

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

+1

क्या * * स्कीमा हैं, कि '\ dn' सूचियाँ, तालिका के विपरीत कि' \ dt' सूचियाँ? 29 apr. 162016-04-29 15:29:19

  0

@ टॉमी '\ dt' सार्वजनिक स्कीमा के लिए तालिकाओं को सूचीबद्ध करता है।सभी स्कीमाओं की तालिकाएँ दिखाने के लिए '\ dt *। * का उपयोग करें और किसी विशेष स्कीमा के लिए' \ dta_name * का उपयोग करें। 22 nov. 172017-11-22 06:34:33

  0

@ टॉमी, स्कीमा नामस्थान हैं: आपके पास अलग-अलग नामस्थानों में समान नाम वाली अलग-अलग तालिकाएँ हो सकती हैं। 30 nov. 172017-11-30 08:48:11


25

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

DBName=# \dn

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

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

    DBName=# help
    

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

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

फिर दबायें

DBName=# \?

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


2

पोस्टिंग की शुरुआत 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;
+6

आपको इसे छल करने की आवश्यकता नहीं है;बस '' सेट ECHO_HIDDEN पर चलाएं 11 sep. 162016-09-11 01:22:31

+4

या इसे 'psql -E' के रूप में चलाएं 22 dec. 162016-12-22 17:46:28