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

Psql सभी तालिकाओं को सूचीबद्ध करें

अगर आप सभी को सूचीबद्ध करना चाहते हैं टेबल, आपको अवश्य उपयोग करना चाहिए:

\dt *.*

यह इंगित करने के लिए कि आप सभी टेबल सभी स्कीमा में चाहते हैं . इसमें pg_catalog . में तालिकाएं शामिल होंगी , सिस्टम टेबल, और वे information_schema . "सभी उपयोगकर्ता-परिभाषित स्कीमा में सभी तालिकाएं" कहने का कोई अंतर्निहित तरीका नहीं है; हालांकि, आप अपना search_path . सेट कर सकते हैं \dt . चलाने से पहले रुचि के सभी स्कीमाओं की सूची में ।

आप इसे प्रोग्रामेटिक रूप से करना चाह सकते हैं, जिस स्थिति में psql बैकस्लैश-कमांड काम नहीं करेगा। यह वह जगह है जहां INFORMATION_SCHEMA बचाव के लिए आता है। तालिकाओं को सूचीबद्ध करने के लिए:

SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';

BTW, अगर आप कभी देखना चाहते हैं कि psql . क्या है बैकस्लैश कमांड के जवाब में कर रहा है, चलाएं psql -E . के साथ झंडा। उदाहरण:

$ psql -E regress    
regress=# \list
********* QUERY **********
SELECT d.datname as "Name",
       pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
       pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
       d.datcollate as "Collate",
       d.datctype as "Ctype",
       pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;
**************************

ताकि आप देख सकें कि psql खोज रहा है pg_catalog.pg_database जब इसे डेटाबेस की सूची मिलती है। इसी तरह, किसी दिए गए डेटाबेस में तालिकाओं के लिए:

SELECT n.nspname as "Schema",
  c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as "Type",
  pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
      AND n.nspname <> 'pg_catalog'
      AND n.nspname <> 'information_schema'
      AND n.nspname !~ '^pg_toast'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;

SQL-मानक, पोर्टेबल INFORMATION_SCHEMA . का उपयोग करना बेहतर है जहां संभव हो, पीजी सिस्टम कैटलॉग के बजाय, लेकिन कभी-कभी आपको पीजी-विशिष्ट जानकारी की आवश्यकता होती है। उन मामलों में सिस्टम कैटलॉग को सीधे क्वेरी करना ठीक है, और psql -E ऐसा करने के लिए एक सहायक मार्गदर्शिका हो सकती है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy कोई पासवर्ड आपूर्ति त्रुटि नहीं

  2. Django + Postgres + बड़ी समय श्रृंखला

  3. PostgreSQL में HTML टैग्स को अलग करना

  4. सबक्वेरी खराब प्रदर्शन के साथ PostgreSQL IN ऑपरेटर

  5. SQL पंक्ति वापसी क्रम