अगर आप सभी को सूचीबद्ध करना चाहते हैं टेबल, आपको अवश्य उपयोग करना चाहिए:
\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
ऐसा करने के लिए एक सहायक मार्गदर्शिका हो सकती है।