show tables
PostgreSQL में (MySQL से) के बराबर क्या है ?
show tables
PostgreSQL में (MySQL से) के बराबर क्या है ?
जवाबों:
से psql
कमांड लाइन इंटरफेस,
सबसे पहले, अपना डेटाबेस चुनें
\c database_name
फिर, यह वर्तमान स्कीमा में सभी तालिकाओं को दिखाता है:
\dt
प्रोग्रामेटिकली (या psql
इंटरफ़ेस से भी, बिल्कुल):
SELECT * FROM pg_catalog.pg_tables;
सिस्टम टेबल pg_catalog
डेटाबेस में रहते हैं ।
\l
के बराबर है show databases
। dt
User show tables
और l
'show databases
\dt
बहुत उपयोगी है। यह pg_catalog.pg_tables
एक बहुत कम है, क्योंकि यह जो भी डेटाबेस से जुड़ा होना है उसके लिए उपयोगकर्ता द्वारा बनाए गए आंतरिक तालिकाओं के साथ एक साथ गांठ दिखाई देता है।
psql my_db_name
\dt
काम करने के लिए चलना चाहिए । जब मैं psql
एक डेटाबेस नाम के बिना भाग गया, मुझे एक "कोई संबंध नहीं मिला" संदेश मिला
SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
\c <DATABASE_NAME>
अपना डेटाबेस चुनने की आवश्यकता है।
सुपरयुसर के रूप में लॉगिन करें:
sudo -u postgres psql
आप सभी डेटाबेस और उपयोगकर्ताओं को \l
कमांड द्वारा सूचीबद्ध कर सकते हैं , (सूची अन्य कमांड द्वारा \?
)।
अब यदि आप अन्य डेटाबेस देखना चाहते हैं, तो आप उपयोगकर्ता / डेटाबेस को \c
कमांड द्वारा बदल सकते हैं \c template1
, \c postgres postgres
और उपयोग कर सकते हैं \d
, \dt
या \dS
तालिकाओं / विचारों / आदि को देख सकते हैं।
(संपूर्णता के लिए)
आप 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');
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 में आप इस तरह के कमांड चला सकते हैं:
\?
सभी कमांड को सूचीबद्ध करें\l
सूची डेटाबेस\conninfo
वर्तमान कनेक्शन के बारे में जानकारी प्रदर्शित करें\c [DBNAME]
नए डेटाबेस से कनेक्ट करें, जैसे, \c template1
\dt
सार्वजनिक स्कीमा की सूची टेबल\dt <schema-name>.*
कुछ स्कीमा की सूची टेबल, जैसे, \dt public.*
\dt *.*
सभी स्कीमाओं की सूचीSELECT * FROM my_table;
(नोट: एक स्टेटमेंट अर्धविराम के साथ समाप्त किया जाना चाहिए ;
)\q
Psql को छोड़ देंई-फ्लैग के साथ साइकल चलाना, आंतरिक रूप से इस्तेमाल की जाने वाली क्वेरी को गूंजने के लिए इस्तेमाल किया जाएगा।
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;
**************************
एक सुपरयुसर के रूप में लॉग इन करें ताकि आप सभी डेटाबेस और उनके स्कीम्स की जांच कर सकें: -
sudo su - postgres
फिर हम निम्नलिखित कमांड का उपयोग करके पोस्टग्रैस्कल शेल प्राप्त कर सकते हैं: -
psql
अब आप निम्न आदेश का उपयोग करके सभी डेटाबेस सूची देख सकते हैं: -
\l
यदि आप डेटाबेस के आकार के साथ-साथ उपयोग की जाँच करना चाहते हैं: -
\l+
q
वापस जाने के लिए दबाएं ।
एक बार जब आप अपना डेटाबेस पा लेते हैं, तो आप निम्नलिखित कमांड का उपयोग करके उस डेटाबेस से जुड़ सकते हैं: -
\c database_name
एक बार कनेक्ट होने के बाद आप डेटाबेस टेबल या स्कीमा की जांच कर सकते हैं: -
\d
अब शेल के उपयोग पर वापस लौटने के लिए: -
q
अब एक निश्चित तालिका उपयोग का विवरण देखने के लिए: -
\d table_name
Postgresql_shell प्रेस पर वापस जाने के लिए \q
।
और टर्मिनल प्रेस पर वापस जाने के लिए exit
।
यदि आप केवल आपके द्वारा बनाई गई तालिकाओं की सूची देखना चाहते हैं, तो आप केवल यह कह सकते हैं:
\dt
लेकिन हमारे पास वह भी है PATTERN
जो आपको यह दिखाने में मदद करेगा कि कौन सी तालिकाओं को अनुकूलित किया जाए। pg_catalog
स्कीमा सहित सभी दिखाने के लिए , आप जोड़ सकते हैं *
।
\dt *
यदि तुम करो: \?
\ dt [S +] [पत्र] सूची तालिकाओं
उपयोग केवल एक टेबल देखें
=> \dt
अगर स्कीमा टेबल देखना चाहते हैं
=>\dt+
यदि आप विशिष्ट स्कीमा टेबल देखना चाहते हैं
=>\dt schema_name.*
+
के साथ S
। उत्तरार्द्ध (पत्र) स्कीमा तालिकाओं को दर्शाता है। +
केवल अतिरिक्त जानकारी दिखाता है।
निम्नलिखित कमांड का उपयोग करके पहले डेटाबेस से जुड़ें
\c database_name
और अगर आप यह संदेश दिखाई देगा - You are now connected to database database_name
। और वे निम्नलिखित कमांड चलाते हैं
SELECT * FROM table_name;
Database_name और table_name में सिर्फ अपने डेटाबेस और टेबल के नाम के साथ अपडेट करें
यदि आप PostgreSQL में pgAdmin4 का उपयोग कर रहे हैं, तो आप इसका उपयोग अपने डेटाबेस में तालिकाओं को दिखाने के लिए कर सकते हैं:
select * from information_schema.tables where table_schema='public';
ध्यान दें कि \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
select
*
from
pg_catalog.pg_tables
where
schemaname != 'information_schema'
and schemaname != 'pg_catalog';
\ dt (नहीं * आवश्यक) - आपके द्वारा पहले से जुड़े किसी मौजूदा डेटाबेस के लिए सभी तालिकाओं को सूचीबद्ध करेगा। नोट करने के लिए भी उपयोगी:
\ d [table_name] - किसी दी गई तालिका के लिए सभी कॉलम दिखाएगा जिसमें प्रकार की जानकारी, संदर्भ और प्रमुख बाधाएं शामिल हैं।
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
सबसे पहले आपको अपने डेटाबेस से जुड़ना होगा जैसे
मेरा डेटाबेस ubuntu है
कनेक्ट करने के लिए इस कमांड का उपयोग करें
\c ubuntu
यह संदेश दिखाएगा
"आप अब उपयोगकर्ता" पोस्टग्रेज "के रूप में डेटाबेस" ubuntu "से जुड़े हैं।"
अभी
इसमें सभी टेबल दिखाने के लिए इस कमांड को रन करें
\d+
कमांड लाइन पर सभी तालिकाओं को सूचीबद्ध करने का सबसे सरल तरीका मेरे स्वाद के लिए है:
psql -a -U <user> -p <port> -h <server> -c "\dt"
किसी दिए गए डेटाबेस के लिए बस डेटाबेस का नाम जोड़ें:
psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>
यह लिनक्स और विंडोज दोनों पर काम करता है।
एक त्वरित 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