show tables
PostgreSQL'deki (MySQL'den) eşdeğeri nedir ?
show tables
PostgreSQL'deki (MySQL'den) eşdeğeri nedir ?
Yanıtlar:
Gönderen psql
komut satırı arayüzü
İlk olarak, veritabanınızı seçin
\c database_name
Ardından, geçerli şemadaki tüm tablolar gösterilir:
\dt
Programlı olarak (veya psql
elbette arayüzden de):
SELECT * FROM pg_catalog.pg_tables;
Sistem tabloları pg_catalog
veritabanında yaşar .
\l
eşdeğerdir show databases
. dt
≃ show tables
and l
≃show databases
\dt
çok kullanışlı. Bu pg_catalog.pg_tables
, bağlandığınız veritabanı için iç tabloları kullanıcı tarafından oluşturulan tablolarla birlikte göründüğü için çok daha azdır.
psql my_db_name
\dt
çalışmak için çalıştırılmalıdır . psql
Veritabanı adı olmadan koştuğumda , "İlişki bulunamadı" mesajı aldım
SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
\c <DATABASE_NAME>
veritabanınızı seçmeniz gerekiyor .
Süper kullanıcı olarak giriş yap:
sudo -u postgres psql
Tüm veritabanlarını ve kullanıcıları \l
komutla listeleyebilirsiniz (diğer komutları listeleyerek \?
).
Şimdi de kullanıcı / veritabanı değiştirebilir diğer veritabanları görmek istiyorsanız \c
gibi komuta \c template1
, \c postgres postgres
ve kullanım \d
, \dt
veya \dS
/ etc tabloları / görünümleri görmek için.
(Tamamlamak için)
(SQL standardı) bilgi şemasını da sorgulayabilirsiniz :
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
PostgreSQL'de tabloları göstermek için PostgreSQL'in etkileşimli terminal Psql'ini kullanabilirsiniz.
1. Psql'i başlatın
Genellikle psql'ye girmek için aşağıdaki komutu çalıştırabilirsiniz:
psql DBNAME USERNAME
Örneğin, psql template1 postgres
Sahip olabileceğiniz bir durum: kök olarak giriş yaptığınızı ve veritabanı adını hatırlamadığınızı varsayalım. Psql'e ilk girerek şunu girebilirsiniz:
sudo -u postgres psql
Bazı sistemlerde, sudo komutu kullanılamaz, bunun yerine aşağıdaki komutlardan birini çalıştırabilirsiniz:
psql -U postgres
psql --username=postgres
2. Tabloları göster
Şimdi Psql'de aşağıdaki gibi komutları çalıştırabilirsiniz:
\?
tüm komutları listele\l
veritabanlarını listele\conninfo
geçerli bağlantı hakkında bilgi görüntüleme\c [DBNAME]
yeni veritabanına bağlanma, ör. \c template1
\dt
genel şemanın tablolarını listele\dt <schema-name>.*
belirli şemaların tablolarını listeler, ör. \dt public.*
\dt *.*
tüm şemaların tablolarını listeleSELECT * FROM my_table;
(Not: bir deyim noktalı virgülle sonlandırılmalıdır ;
)\q
psql'den çıkPsql'nin -E bayrağıyla çalıştırılması, \ dt ve benzerlerini uygulamak için dahili olarak kullanılan sorguyu yansıtır:
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;
**************************
Tüm veritabanlarını ve şemalarını kontrol edebilmeniz için bir süper kullanıcı olarak giriş yapın: -
sudo su - postgres
Sonra aşağıdaki komutu kullanarak postgresql kabuk alabilirsiniz: -
psql
Artık aşağıdaki komutu kullanarak tüm veritabanı listesini kontrol edebilirsiniz: -
\l
Veritabanlarının boyutlarını da kontrol etmek istiyorsanız kullanın: -
\l+
q
Geri dönmek için tuşuna basın .
Veritabanınızı bulduktan sonra şu komutu kullanarak bu veritabanına bağlanabilirsiniz: -
\c database_name
Bağlandıktan sonra veritabanı tablolarını veya şemasını kontrol edebilirsiniz:
\d
Şimdi kabuk kullanımına geri dönmek için: -
q
Şimdi belirli bir tablo kullanımının ayrıntılarını daha fazla görmek için: -
\d table_name
Postgresql_shell'e geri dönmek için tuşuna basın \q
.
Terminal terminaline geri dönmek için exit
.
Yalnızca oluşturduğunuz tabloların listesini görmek istiyorsanız, yalnızca şunu söyleyebilirsiniz:
\dt
Ancak PATTERN
, hangi tabloların gösterileceğini özelleştirmenize de yardımcı olacak. pg_catalog
Şema dahil olmak üzere tümünü göstermek için ekleyebilirsiniz *
.
\dt *
Yaparsan: \?
\ dt [S +] [PATTERN] liste tabloları
sadece tablolara bak
=> \dt
şema tablolarını görmek istiyorsanız
=>\dt+
belirli şema tablolarını görmek istiyorsanız
=>\dt schema_name.*
+
ile S
. İkincisi (harf) şema tablolarını gösterir. +
Sadece ekstra bilgi gösterir.
Önce aşağıdaki komutu kullanarak Veritabanına bağlanın
\c database_name
Ve bu mesajı göreceksiniz - You are now connected to database database_name
. Ve aşağıdaki komutu çalıştırıyorlar
SELECT * FROM table_name;
Veritabanı_adı ve tablo_adı olarak veritabanınız ve tablo adınızla güncelleyin
PostgreSQL'de pgAdmin4 kullanıyorsanız, veritabanınızdaki tabloları göstermek için bunu kullanabilirsiniz:
select * from information_schema.tables where table_schema='public';
\dt
Yalnızca , kullandığınız veritabanının genel şemasındaki tabloları listeleyeceğinizi unutmayın . Tablolarımı ayrı şemalarda tutmayı seviyorum, bu yüzden kabul edilen cevap benim için işe yaramadı.
Belirli bir şemadaki tüm tabloları listelemek için aşağıdakileri yapmam gerekiyordu:
1) İstenilen veritabanına bağlanın:
psql mydb
2) Komuttan sonra tablolarını görmek istediğim şema adını belirtin, \dt
şöyle:
\dt myschema.*
Bu bana ilgilendiğim sonuçları gösteriyor:
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 (* gerekli değil) - bağlı olduğunuz mevcut bir veritabanı için tüm tabloları listeler. Ayrıca dikkat edilmesi gereken noktalar:
\ d [tablo_adı] - tür bilgisi, başvurular ve anahtar kısıtlamaları dahil olmak üzere belirli bir tablo için tüm sütunları gösterir.
Psql : \ dt kullanma
Veya:
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
Her şeyden önce veritabanı gibi
veritabanım ubuntu
bağlanmak için bu komutu kullan
\c ubuntu
Bu mesaj gösterilecek
"Artık" ubuntu "veritabanına" postgres "kullanıcısı olarak bağlısınız."
şimdi
İçindeki tüm tabloları göstermek için bu komutu çalıştırın
\d+
Komut satırındaki tüm tabloları listelemenin en basit yolu, zevkime göre:
psql -a -U <user> -p <port> -h <server> -c "\dt"
Belirli bir veritabanı için veritabanı adını eklemeniz yeterlidir:
psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>
Hem Linux hem de Windows üzerinde çalışır.
hızlı bir oneliner olarak
# 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'
veya çok daha net json çıkışı çok astarı tercih ederseniz:
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
Yabancı tabloları psql'de görüntülemek için \dE