2010-02-16 16 views
107

में सभी तालिकाओं की सूची PostgreSQL की info_schema के भीतर सभी तालिकाओं को सूचीबद्ध करने का सबसे अच्छा तरीका क्या है?postgresql info_schema

स्पष्टीकरण के लिए: मैं एक खाली डीबी (मैंने अपनी कोई भी टेबल नहीं जोड़ा है) के साथ काम कर रहा हूं, लेकिन मैं info_schema संरचना में प्रत्येक तालिका देखना चाहता हूं।

उत्तर

153

आपको किसी विशेष डेटाबेस के लिए पोस्टग्रेस द्वारा प्रबंधित की जा रही प्रत्येक तालिका की सूची प्राप्त करने के लिए केवल select * from information_schema.tables चलाने में सक्षम होना चाहिए।

आप जानकारी स्कीमा में केवल तालिका देखने के लिए where table_schema = 'information_schema' भी जोड़ सकते हैं।

+3

धन्यवाद, मैं सिर्फ कोशिश की:/डीटी (तारांकन)। (तारांकन) क्या कोई अलग है? – littleK

+0

मुझे/डीटी (तारांकन) के बारे में कुछ भी पता नहीं है। (तारांकन) चीज, क्षमा करें। मैंने पोस्टग्रेज़ में सिर्फ चयनित क्वेरी चलाई और इसमें सभी तालिकाओं के बारे में जानकारी सूचीबद्ध की गई। चुनिंदा कथन (अपने खाली डीबी पर) चलाने का प्रयास करें और देखें कि यह क्या लौटाता है। – RodeoClown

+0

उपरोक्त आदेश को आज़माकर निम्न तालिकाओं को info_schema में सूचीबद्ध किया गया है: sql_features, sql_implementation_info, sql_languages, sql_packages, sql_parts, sql_sizing, sql_sizing_profiles ..... तो उन तालिकाओं और info_schema.tables में से क्या अंतर है? – littleK

28
\dt information_schema. 

psql के भीतर से, ठीक होना चाहिए।

62

अपने टेबल लिस्टिंग के लिए उपयोग करें:

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

यह केवल सूची टेबल है कि आप का निर्माण करेगा।

+0

टेबल के बारे में कैसे आप नहीं बनाते हैं लेकिन आपके पास पहुंच की अनुमति है? – huy

+3

यह केवल सार्वजनिक स्कीमा में टेबल दिखाएगा। आप अन्य स्कीमा में टेबल बना सकते हैं। –

6

तुम भी

select * from pg_tables where schemaname = 'information_schema' 

का उपयोग कर सकते generall स्नातकोत्तर में * टेबल आप (आप निश्चित रूप से तालिकाओं के लिए पास पहुंच है) DB में सब कुछ देखने के लिए नहीं, बल्कि आपके अनुमतियों के लिए विवश अनुमति देते हैं।

3
PostgreSQL में निजी स्कीमा 'xxx' लिए

:

SELECT table_name FROM information_schema.tables 
WHERE table_schema = 'xxx' AND table_type = 'BASE TABLE' 

table_type = 'BASE TABLE' के बिना, आप सूची जाएगा टेबल और विचारों

7

"\ z" COMMAND भी टेबल जब सूची एक अच्छा तरीका है इंटरैक्टिव psql सत्र के अंदर।

उदाहरण के लिए।

# psql -d mcdb -U admin -p 5555 
mcdb=# /z 
          Access privileges for database "mcdb" 
Schema |    Name    | Type |   Access privileges 
--------+--------------------------------+----------+--------------------------------------- 
public | activities      | table | 
public | activities_id_seq    | sequence | 
public | activities_users_mapping  | table | 
[..] 
public | v_schedules_2     | view  | {admin=arwdxt/admin,viewuser=r/admin} 
public | v_systems      | view  | 
public | vapp_backups     | table | 
public | vm_client      | table | 
public | vm_datastore     | table | 
public | vmentity_hle_map    | table | 
(148 rows) 
0

आप एक त्वरित और गंदे एक लाइनर क्वेरी चाहते हैं:

select * from information_schema.tables

आप psql खोले बिना क्वेरी उपकरण में सीधे चला सकते हैं।

(अन्य पदों अच्छा और अधिक विशिष्ट INFORMATION_SCHEMA क्वेरी का सुझाव दे, लेकिन एक newby के रूप में, मैं इस एक लाइनर क्वेरी लग रहा है मुझे मेज के साथ पकड़ करने के लिए मिल में मदद करता है)