PostgreSQL: PostgreSQL में टेबल दिखाएं


जवाबों:


2660

से psqlकमांड लाइन इंटरफेस,

सबसे पहले, अपना डेटाबेस चुनें

\c database_name

फिर, यह वर्तमान स्कीमा में सभी तालिकाओं को दिखाता है:

\dt

प्रोग्रामेटिकली (या psqlइंटरफ़ेस से भी, बिल्कुल):

SELECT * FROM pg_catalog.pg_tables;

सिस्टम टेबल pg_catalogडेटाबेस में रहते हैं ।


102
@StephenCorwin नहीं, MySQL \lके बराबर है show databasesdtUser show tablesऔर l'show databases
उपयोगकर्ता 454322

12
\dtबहुत उपयोगी है। यह pg_catalog.pg_tablesएक बहुत कम है, क्योंकि यह जो भी डेटाबेस से जुड़ा होना है उसके लिए उपयोगकर्ता द्वारा बनाए गए आंतरिक तालिकाओं के साथ एक साथ गांठ दिखाई देता है।
एरोह

33
psql my_db_name\dtकाम करने के लिए चलना चाहिए । जब मैं psqlएक डेटाबेस नाम के बिना भाग गया, मुझे एक "कोई संबंध नहीं मिला" संदेश मिला
मक्सिम दिमित्रिक

31
सिस्टम टेबल के बिना:SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
मैट व्हाइट

39
आपको पहले \c <DATABASE_NAME>अपना डेटाबेस चुनने की आवश्यकता है।
डेनियो

200

सुपरयुसर के रूप में लॉगिन करें:

sudo -u postgres psql

आप सभी डेटाबेस और उपयोगकर्ताओं को \lकमांड द्वारा सूचीबद्ध कर सकते हैं , (सूची अन्य कमांड द्वारा \?)।

अब यदि आप अन्य डेटाबेस देखना चाहते हैं, तो आप उपयोगकर्ता / डेटाबेस को \cकमांड द्वारा बदल सकते हैं \c template1, \c postgres postgresऔर उपयोग कर सकते हैं \d, \dtया \dSतालिकाओं / विचारों / आदि को देख सकते हैं।


1
यह एक बेहतर उत्तर है, क्योंकि आम तौर पर एक से अधिक डेटाबेस स्थापित हो सकते हैं।
जेरोम

यह बहुत मददगार था। धन्यवाद।
वादा

123

(संपूर्णता के लिए)

आप SQL (SQL- मानक) सूचना स्कीमा को भी क्वेरी कर सकते हैं :

SELECT
    table_schema || '.' || table_name
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');

3
+1 हालांकि पूर्णता के लिए, mysql शो टेबल केवल वर्तमान स्कीमा को दिखाता है, इसके बारे में इस तरह से सोचना अच्छा है, mysql में केवल एक डेटाबेस है, लेकिन कई स्कीमा हैं, जहां postgresql में mutliple डेटाबेस (कैटलॉग) और स्कीमा हो सकते हैं। तो समतुल्य होना चाहिए table_schema = 'DB_NAME';
रात्रि

बिल्कुल मानक एसक्यूएल नहीं, उपयोग नहीं कर सकते हैं "|| mssql पर तार को
समेटना

122

PostgreSQL में टेबल दिखाने के लिए आप PostgreSQL के इंटरेक्टिव टर्मिनल Psql का उपयोग कर सकते हैं।

1. Psql शुरू करें

आमतौर पर आप psql में प्रवेश करने के लिए निम्न कमांड चला सकते हैं:

psql DBNAME USERNAME

उदाहरण के लिए, psql template1 postgres

आपके पास एक स्थिति यह हो सकती है: मान लीजिए कि आप रूट के रूप में लॉगिन करते हैं, और आपको डेटाबेस का नाम याद नहीं है। आप दौड़कर सबसे पहले Psql में प्रवेश कर सकते हैं:

sudo -u postgres psql

कुछ सिस्टम में, sudo कमांड उपलब्ध नहीं है, आप इसके बजाय नीचे या तो कमांड चला सकते हैं:

psql -U postgres
psql --username=postgres

2. टेबल दिखाएं

अब Psql में आप इस तरह के कमांड चला सकते हैं:

  1. \? सभी कमांड को सूचीबद्ध करें
  2. \l सूची डेटाबेस
  3. \conninfo वर्तमान कनेक्शन के बारे में जानकारी प्रदर्शित करें
  4. \c [DBNAME] नए डेटाबेस से कनेक्ट करें, जैसे, \c template1
  5. \dt सार्वजनिक स्कीमा की सूची टेबल
  6. \dt <schema-name>.* कुछ स्कीमा की सूची टेबल, जैसे, \dt public.*
  7. \dt *.* सभी स्कीमाओं की सूची
  8. फिर आप SQL स्टेटमेंट चला सकते हैं, उदाहरण के लिए, SELECT * FROM my_table;(नोट: एक स्टेटमेंट अर्धविराम के साथ समाप्त किया जाना चाहिए ;)
  9. \q Psql को छोड़ दें

52
  1. उपयोगकर्ता के रूप में लॉगिन करने के लिए पहला लॉगिन:

    sudo su - postgres

  2. आवश्यक db से कनेक्ट करें: psql -d databaseName

  3. \dt आपके द्वारा जुड़े डेटाबेस में सभी तालिका की सूची लौटा दी जाएगी।


40

ई-फ्लैग के साथ साइकल चलाना, आंतरिक रूप से इस्तेमाल की जाने वाली क्वेरी को गूंजने के लिए इस्तेमाल किया जाएगा।

sudo -u postgres psql -E

postgres=# \dt       
********* QUERY **********
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' 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;        
**************************

1
BTW, TOAST का उपयोग बड़े मूल्यों को संग्रहीत करने के लिए किया जाता है: postgresql.org/docs/8.3/static/storage-toast.html
डोरियन

39

एक सुपरयुसर के रूप में लॉग इन करें ताकि आप सभी डेटाबेस और उनके स्कीम्स की जांच कर सकें: -

sudo su - postgres

फिर हम निम्नलिखित कमांड का उपयोग करके पोस्टग्रैस्कल शेल प्राप्त कर सकते हैं: -

psql

अब आप निम्न आदेश का उपयोग करके सभी डेटाबेस सूची देख सकते हैं: -

\l

यदि आप डेटाबेस के आकार के साथ-साथ उपयोग की जाँच करना चाहते हैं: -

\l+

qवापस जाने के लिए दबाएं ।

एक बार जब आप अपना डेटाबेस पा लेते हैं, तो आप निम्नलिखित कमांड का उपयोग करके उस डेटाबेस से जुड़ सकते हैं: -

\c database_name

एक बार कनेक्ट होने के बाद आप डेटाबेस टेबल या स्कीमा की जांच कर सकते हैं: -

\d

अब शेल के उपयोग पर वापस लौटने के लिए: -

q

अब एक निश्चित तालिका उपयोग का विवरण देखने के लिए: -

\d table_name

Postgresql_shell प्रेस पर वापस जाने के लिए \q

और टर्मिनल प्रेस पर वापस जाने के लिए exit


24

यदि आप केवल आपके द्वारा बनाई गई तालिकाओं की सूची देखना चाहते हैं, तो आप केवल यह कह सकते हैं:

\dt

लेकिन हमारे पास वह भी है PATTERNजो आपको यह दिखाने में मदद करेगा कि कौन सी तालिकाओं को अनुकूलित किया जाए। pg_catalogस्कीमा सहित सभी दिखाने के लिए , आप जोड़ सकते हैं *

\dt *

यदि तुम करो: \?

\ dt [S +] [पत्र] सूची तालिकाओं


23

उपयोग केवल एक टेबल देखें

=> \dt

अगर स्कीमा टेबल देखना चाहते हैं

=>\dt+

यदि आप विशिष्ट स्कीमा टेबल देखना चाहते हैं

=>\dt schema_name.* 

मैं बहुत आप भ्रमित कर रहे हैं यकीन +के साथ S। उत्तरार्द्ध (पत्र) स्कीमा तालिकाओं को दर्शाता है। +केवल अतिरिक्त जानकारी दिखाता है।
गैरेट विल्सन

20

निम्नलिखित कमांड का उपयोग करके पहले डेटाबेस से जुड़ें

\c database_name

और अगर आप यह संदेश दिखाई देगा - You are now connected to database database_name। और वे निम्नलिखित कमांड चलाते हैं

SELECT * FROM table_name;

Database_name और table_name में सिर्फ अपने डेटाबेस और टेबल के नाम के साथ अपडेट करें


20
मुझे यकीन नहीं है कि यह सवाल का जवाब दे रहा है। मुझे लगता है कि ओपी अपने डेटाबेस में सभी तालिकाओं को जानने की कोशिश कर रहा है, अपने डेटाबेस में किसी विशेष तालिका से सभी पंक्तियों को नहीं मिला ... है ना?
snuggles

16

यदि आप PostgreSQL में pgAdmin4 का उपयोग कर रहे हैं, तो आप इसका उपयोग अपने डेटाबेस में तालिकाओं को दिखाने के लिए कर सकते हैं:

select * from information_schema.tables where table_schema='public';

14

ध्यान दें कि \dtअकेले जनता में तालिकाओं को सूचीबद्ध करेगा आपके द्वारा उपयोग किए जा रहे डेटाबेस स्कीमा । मुझे अपनी टेबल को अलग-अलग स्कीमा में रखना पसंद है, इसलिए स्वीकृत जवाब मेरे काम नहीं आया।

किसी विशिष्ट स्कीमा के भीतर सभी तालिकाओं को सूचीबद्ध करने के लिए , मुझे इसकी आवश्यकता है:

1) वांछित डेटाबेस से कनेक्ट करें:

psql mydb

2) स्कीमा नाम निर्दिष्ट करें जो मैं \dtकमांड के बाद के लिए तालिकाओं को देखना चाहता हूं , जैसे:

\dt myschema.*

यह मुझे उन परिणामों को दिखाता है जिनमें मेरी रुचि है:

               List of relations
 Schema   |       Name      | Type  |  Owner   
----------+-----------------+-------+----------
 myschema | users           | table | postgres
 myschema | activity        | table | postgres
 myschema | roles           | table | postgres


8

\ dt (नहीं * आवश्यक) - आपके द्वारा पहले से जुड़े किसी मौजूदा डेटाबेस के लिए सभी तालिकाओं को सूचीबद्ध करेगा। नोट करने के लिए भी उपयोगी:

\ d [table_name] - किसी दी गई तालिका के लिए सभी कॉलम दिखाएगा जिसमें प्रकार की जानकारी, संदर्भ और प्रमुख बाधाएं शामिल हैं।


6

आप मौजूदा डेटाबेस में तालिकाओं को सूचीबद्ध कर सकते हैं \dt

Fwiw, \d tablenameदी गई तालिका के बारे में विवरण दिखाएगा, कुछ show columns from tablenameMySQL में, लेकिन थोड़ी अधिक जानकारी के साथ।


5

Psql का उपयोग करना : \ dt

या:

SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
        LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
        AND c.relkind = 'r'
        AND relname NOT LIKE 'pg_%'
ORDER BY 1

3

सबसे पहले आपको अपने डेटाबेस से जुड़ना होगा जैसे

मेरा डेटाबेस ubuntu है

कनेक्ट करने के लिए इस कमांड का उपयोग करें

 \c ubuntu

यह संदेश दिखाएगा

"आप अब उपयोगकर्ता" पोस्टग्रेज "के रूप में डेटाबेस" ubuntu "से जुड़े हैं।"

अभी

इसमें सभी टेबल दिखाने के लिए इस कमांड को रन करें

\d+

3

कमांड लाइन पर सभी तालिकाओं को सूचीबद्ध करने का सबसे सरल तरीका मेरे स्वाद के लिए है:

psql -a -U <user> -p <port> -h <server> -c "\dt"

किसी दिए गए डेटाबेस के लिए बस डेटाबेस का नाम जोड़ें:

psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>

यह लिनक्स और विंडोज दोनों पर काम करता है।


3

एक त्वरित oneliner के रूप में

# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'

या यदि आप बहुत स्पष्ट json उत्पादन बहु-लाइनर पसंद करते हैं:

IFS='' read -r -d '' sql_code <<"EOF_CODE"
    select array_to_json(array_agg(row_to_json(t))) from (
        SELECT table_catalog,table_schema,table_name 
        FROM information_schema.tables
        ORDER BY table_schema,table_name ) t
EOF_CODE
psql -d postgres -t -q -c "$sql_code"|jq

1

\ dt टेबल को सूचीबद्ध करेगा, और "\ pset पेजर ऑफ" उन्हें एक ही विंडो में दिखाता है, एक अलग से स्विच किए बिना। प्यार कि मृत्यु में सुविधा।



0

सबसे पहले, जो डेटाबेस यू कनेक्ट करने की जरूरत है दर्ज करें

\c database_name

फिर, यह वर्तमान स्कीमा में सभी तालिकाओं को दिखाता है:

\dt

-2

सबसे पहले आप अपने पोस्टग्रेज डेटाबेस को मैक पर पोस्टग्रे.पैप या पोस्टिको का उपयोग करके कनेक्ट कर सकते हैं। निम्न आदेश चलाएँ:

psql -h localhost -p port_number -d database_name -U user_name -W

तब आप अपना पासवर्ड दर्ज करते हैं, इससे आपके डेटाबेस तक पहुंच होनी चाहिए

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