PostgreSQL: wyświetlanie tabel w PostgreSQL

Jaki jest odpowiednik show tables (z MySQL) w PostgreSQL?

 1977
Author: Promise Preston, 2009-04-20

24 answers

Z interfejsu linii poleceń psql,

Najpierw wybierz swoją bazę danych

\c database_name

To pokazuje wszystkie tabele w bieżącym schemacie:

\dt

Programowo (lub oczywiście z interfejsu psql):

SELECT * FROM pg_catalog.pg_tables;

Tabele systemowe żyją w bazie danych pg_catalog.

 2852
Author: Mihai Limbășan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-31 05:35:07

Zaloguj się jako superuser:

sudo -u postgres psql

Możesz wyświetlić listę wszystkich baz danych i użytkowników za pomocą polecenia \l, (Lista innych poleceń za pomocą \?).

Teraz, jeśli chcesz zobaczyć inne bazy danych, możesz zmienić użytkownika / bazę danych za pomocą \c polecenia, jak \c template1, \c postgres postgres i użycie \d, \dt lub \dS, aby zobaczyć tabele / widoki / itp.

 206
Author: JLarky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-16 10:13:20

Możesz użyć interaktywnego terminala Psql w PostgreSQL do wyświetlania tabel w PostgreSQL.

1. Start Psql

Zazwyczaj można uruchomić następujące polecenie, aby wejść do psql:

psql DBNAME USERNAME

Na przykład psql template1 postgres

Jedna sytuacja, którą możesz mieć, to: Załóżmy, że logujesz się jako root i nie pamiętasz nazwy bazy danych. Możesz po prostu wejść najpierw do Psql, uruchamiając:

sudo -u postgres psql

W niektórych systemach polecenie sudo nie jest dostępne, zamiast tego można uruchomić albo polecenie poniżej:

psql -U postgres
psql --username=postgres

2. Pokaż tabele

Teraz w Psql możesz uruchamiać polecenia takie jak:

  1. \? Lista wszystkich poleceń
  2. \l lista baz danych
  3. \conninfo wyświetlanie informacji o bieżącym połączeniu
  4. \c [DBNAME] połącz się z nową bazą danych, np. \c template1
  5. \dt Spis tabel schematu publicznego
  6. \dt <schema-name>.* Spis tabel niektórych schematów, np. \dt public.*
  7. \dt *.* Spis tabel wszystkich Schematy
  8. następnie można uruchomić polecenia SQL, np. SELECT * FROM my_table; (Uwaga: polecenie musi być zakończone średnikiem ;)
  9. \q Zakończ psql
 144
Author: Yuci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-30 21:43:44

(dla kompletności)

Możesz również odpytywać (SQL-standard) schemat informacyjny:

SELECT
    table_schema || '.' || table_name
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');
 128
Author: Milen A. Radev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-21 09:55:03
  1. Pierwsze logowanie jako użytkownik postgres:

    sudo su - postgres

  2. Podłącz do wymaganego db: psql -d databaseName

  3. \dt zwróci listę wszystkich tabel w bazie danych, z którą jesteś połączony.

 52
Author: nish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-26 06:45:59

Uruchomienie psql z flagą-E spowoduje echo zapytania używanego wewnętrznie do implementacji \dt i podobne:

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;        
**************************
 42
Author: bsb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-02 00:48:08

Zaloguj się jako superużytkownik, aby sprawdzić wszystkie bazy danych i ich schematy:-

sudo su - postgres

Następnie możemy dostać się do powłoki postgresql używając następującego polecenia:-

psql

Możesz teraz sprawdzić listę wszystkich baz danych za pomocą następującego polecenia:-

\l

Jeśli chcesz sprawdzić rozmiary baz danych, użyj: -

\l+

Naciśnij q, aby wrócić.

Gdy już znajdziesz swoją bazę danych, możesz połączyć się z nią za pomocą następujące polecenie: -

\c database_name

Po podłączeniu można sprawdzić tabele bazy danych lub schemat przez:-

\d

Teraz aby powrócić do powłoki użyj:-

q

Teraz, aby dokładniej zobaczyć szczegóły pewnego użycia tabeli:-

\d table_name

Aby wrócić do postgresql_shell naciśnij \q.

I aby powrócić do terminala Naciśnij exit.

 41
Author: Shashishekhar Hasabnis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-02 11:08:14

Jeśli chcesz zobaczyć tylko listę utworzonych tabel, możesz tylko powiedzieć:

\dt

Ale mamy również PATTERN, które pomogą Ci dostosować tabele do wyświetlania. Aby wyświetlić wszystkie schematy zawierające pg_catalog, możesz dodać *.

\dt *

If you do: \?

\dt [S+] [PATTERN] tabele list

 24
Author: Banned_User,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-07 04:52:32

Użyj tylko patrz tabele

=> \dt

Jeśli chcesz zobaczyć tabele schematu

=>\dt+

Jeśli chcesz zobaczyć konkretne tabele schematów

=>\dt schema_name.* 
 24
Author: Aryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-02 06:15:32

Najpierw połącz się z bazą danych za pomocą następującego polecenia

\c database_name

I zobaczysz tę wiadomość - You are now connected to database database_name. I uruchamiają następujące polecenie

SELECT * FROM table_name;

W database_name i table_name wystarczy zaktualizować swoją bazę danych i nazwę tabeli

 20
Author: J4cK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-26 17:05:03

Jeśli używasz pgAdmin4 w PostgreSQL, możesz użyć tego do wyświetlenia tabel w bazie danych:

select * from information_schema.tables where table_schema='public';
 18
Author: Reynante Daitol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-05 02:18:02

Zauważ, że tylko \dt wyświetli tabele w schemacie public używanej bazy danych. Lubię trzymać moje tabele w oddzielnych schematach, więc przyjęta odpowiedź nie działa dla mnie.

Aby wyświetlić wszystkie tabele w określonym schemacie , musiałem:

1) Połącz się z żądaną bazą danych:

psql mydb

2) Podaj nazwę schematu, dla którego chcę zobaczyć tabele po poleceniu \dt, tak:

\dt myschema.*

To pokazuje mi wyniki, które mnie interesują in:

               List of relations
 Schema   |       Name      | Type  |  Owner   
----------+-----------------+-------+----------
 myschema | users           | table | postgres
 myschema | activity        | table | postgres
 myschema | roles           | table | postgres
 14
Author: rotarydial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-23 04:05:05
select 
  * 
from 
  pg_catalog.pg_tables 
where 
  schemaname != 'information_schema' 
  and schemaname != 'pg_catalog';
 13
Author: Abdelhak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-08 02:36:16

\dt (no * required) -- wyświetli wszystkie tabele dla istniejącej bazy danych, z którą jesteś już połączony. Warto również zwrócić uwagę:

\ d [table_name] -- wyświetli wszystkie kolumny dla danej tabeli łącznie z informacjami o typie, referencjami i ograniczeniami klucza.

 8
Author: user4642897,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-06 23:29:41

Możesz wyświetlić listę tabel w bieżącej bazie danych za pomocą \dt.

Fwiw, \d tablename pokaże szczegóły dotyczące podanej tabeli, coś jak {[2] } w MySQL, ale z nieco większą ilością informacji.

 6
Author: JohnK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-07 19:31:52

Najprostszym sposobem na wyświetlenie wszystkich tabel w wierszu poleceń jest, jak na mój gust:

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

Dla danej bazy danych wystarczy dodać nazwę bazy danych:

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

Działa zarówno na Linuksie, jak i Windows.

 6
Author: Alain Cherpin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-15 21:54:18

Using psql : \dt

Lub:

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
 5
Author: MisterJoyson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-10 08:56:48

Jako szybki 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'

Lub jeśli wolisz znacznie jaśniejsze wyjście json multi-liner:

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
 4
Author: Yordan Georgiev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-09 16:21:16

Przede wszystkim musisz połączyć się z bazą danych jak

Moja baza danych to ubuntu

Użyj tego polecenia do połączenia

 \c ubuntu

Ta wiadomość pokaże

"Jesteś teraz połączony z bazą danych "ubuntu" jako użytkownik "postgres"."

Teraz

Uruchom to polecenie, aby wyświetlić wszystkie tabele w nim

\d+
 3
Author: Usman Yaqoob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-19 11:19:34

\dt wyświetli listę tabel, a "\pset pager off" wyświetli je w tym samym oknie, bez przełączania na osobne. Uwielbiam tę funkcję na śmierć w dbshell.

 1
Author: lauri108,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-17 01:03:15

To zapytanie SQL działa z większością wersji PostgreSQL i dość proste .

select table_name from information_schema.tables where table_schema='public' ;
 1
Author: Vineet Kumar Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-27 08:58:11

Aby wyświetlić tabele obce w psql, Uruchom \dE

 0
Author: Ian Hunter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-12 20:20:57
  1. W interfejsie wiersza poleceń PostgreSQL po zalogowaniu wpisz następujące polecenie, aby połączyć się z żądaną bazą danych.

        \c [database_name]
    

Wtedy zobaczysz tę wiadomość You are now connected to database "[database_name]"

  1. Wpisz następujące polecenie, aby wyświetlić listę wszystkich tabel.

        \dt
    
 0
Author: Ameen Ali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-03 23:22:04

Najpierw możesz połączyć się z bazą danych postgres używając Postgre.aplikacja na Maca lub przy użyciu postico. Uruchom następujące polecenie:

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

Następnie wprowadź hasło, powinno to dać dostęp do bazy danych

 -2
Author: Patcho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 14:03:44