it-swarm.com.de

Tabellen in PostgreSQL anzeigen

Was ist das Äquivalent zu show tables (von MySQL) in PostgreSQL?

1394
flybywire

In der psql-Befehlszeilenschnittstelle werden alle Tabellen im aktuellen Schema angezeigt:

\dt

Programmgesteuert (oder natürlich auch von der psql-Schnittstelle):

SELECT * FROM pg_catalog.pg_tables;

Die Systemtabellen befinden sich in der Datenbank pg_catalog.

2064

Login als Superuser:

Sudo -u postgres psql

Sie können alle Datenbanken und Benutzer mit dem Befehl \l auflisten (andere Befehle mit \? auflisten).

Wenn Sie nun andere Datenbanken anzeigen möchten, können Sie den Benutzer/die Datenbank mit dem \c-Befehl wie \c template1, \c postgres postgres ändern und mit \d, \dt oder \dS Tabellen/Ansichten/etc anzeigen.

152
JLarky

(Zur Vollständigkeit)

Sie können auch das (SQL-Standard) Informationsschema abfragen :

SELECT
    table_schema || '.' || table_name
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');
101
Milen A. Radev
  1. Erster Login als Postgres-Benutzer:

    Sudo su - postgres

  2. verbinden Sie sich mit der erforderlichen Datenbank: psql -d databaseName

  3. \dt würde die Liste aller Tabellen in der Datenbank zurückgeben, mit denen Sie verbunden sind.

48
nish

Sie können das interaktive Terminal Psql von PostgreSQL verwenden, um Tabellen in PostgreSQL anzuzeigen. 

1. Starten Sie Psql

Normalerweise können Sie den folgenden Befehl ausführen, um in psql einzugeben:

psql DBNAME USERNAME

Zum Beispiel psql template1 postgres

Eine Situation, die Sie möglicherweise haben, ist: Nehmen Sie an, Sie melden sich als root an und erinnern sich nicht an den Datenbanknamen. Sie können einfach zuerst in Psql eingeben, indem Sie Folgendes ausführen:

Sudo -u postgres psql

In einigen Systemen ist der Sudo-Befehl nicht verfügbar. Sie können stattdessen einen der folgenden Befehle ausführen:

psql -U postgres
psql --username=postgres

2. Tabellen anzeigen

In Psql können Sie jetzt folgende Befehle ausführen:

  1. \? liste alle Befehle auf
  2. \l listet Datenbanken auf
  3. \conninfo zeigt Informationen zur aktuellen Verbindung an
  4. \c [DBNAME] stellt eine Verbindung zu einer neuen Datenbank her, z. B. \c template1
  5. \dt listet Tabellen auf
  6. Dann können Sie SQL-Anweisungen ausführen, z. B. SELECT * FROM my_table; (Hinweis: Eine Anweisung muss mit einem Semikolon ; abgeschlossen werden.)
  7. \q psql beenden
36
Yuci

Wenn Sie psql mit dem Flag -E ausführen, wird die intern zur Implementierung von \Dt und ähnlicher Abfrage verwendete Abfrage wiederholt.

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;        
**************************
34
bsb

Wenn Sie nur die Liste der von Ihnen erstellten Tabellen anzeigen möchten, können Sie nur Folgendes angeben:

\dt

Wir haben jedoch auch PATTERN, mit dem Sie die anzuzeigenden Tabellen anpassen können. Um alles einschließlich pg_catalog Schema anzuzeigen, können Sie * hinzufügen.

\dt *

Wenn Sie dies tun: \?

\ dt [S +] [PATTERN] listet Tabellen auf

23
Banned_User

Verbinden Sie sich zuerst mit der Datenbank mit folgendem Befehl 

\c database_name

Und Sie werden diese Nachricht sehen - You are now connected to database database_name. Und sie führen den folgenden Befehl aus 

SELECT * FROM table_name;

Aktualisieren Sie in Datenbankname und Tabellenname einfach Ihren Datenbank- und Tabellennamen

20
J4cK

verwenden Sie nur Tabellen 

=> \dt

wenn Sie Schematabellen sehen möchten

=>\dt+

wenn Sie bestimmte Schematabellen sehen möchten

=>\dt schema_name.* 
17
Aryan

Melden Sie sich als Superuser an, um alle Datenbanken und ihre Schemata überprüfen zu können: -

Sudo su - postgres

Dann können wir mit dem folgenden Befehl zur postgresql-Shell gelangen: -

psql

Sie können jetzt die gesamte Datenbankliste mit dem folgenden Befehl überprüfen: -

\l

Wenn Sie auch die Größe der Datenbanken überprüfen möchten, verwenden Sie: -

\l+

Sobald Sie Ihre Datenbank gefunden haben, können Sie mit dem folgenden Befehl eine Verbindung zu dieser Datenbank herstellen: -

\c database_name

Sobald die Verbindung hergestellt ist, können Sie die Datenbanktabellen oder das Schema überprüfen, indem Sie: -

\d

Um zur Shell zurückzukehren, verwenden Sie bitte: -

q

Um nun die Details einer bestimmten Tabelle zu sehen, verwenden Sie: -

\d table_name

Wenn Sie pgAdmin4 in PostgreSQL verwenden, können Sie dies verwenden, um die Tabellen in Ihrer Datenbank anzuzeigen:

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

Beachten Sie, dass \dt alleine Tabellen im public - Schema der von Ihnen verwendeten Datenbank auflistet. Ich mag es, meine Tabellen in getrennten Schemata aufzubewahren, so dass die akzeptierte Antwort für mich nicht funktionierte.

Um alle Tabellen innerhalb eines bestimmten Schemas aufzulisten, musste ich:

1) Verbinden Sie sich mit der gewünschten Datenbank:

psql mydb

2) Geben Sie den Schemanamen an, für den nach dem \dt-Befehl Tabellen angezeigt werden sollen, wie folgt:

\dt myschema.*

Dies zeigt mir die Ergebnisse, die mich interessieren:

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

\ dt (kein * erforderlich) - listet alle Tabellen für eine vorhandene Datenbank auf, mit der Sie bereits verbunden sind. Auch nützlich zu beachten:

\ d [Tabellenname] - Zeigt alle Spalten für eine bestimmte Tabelle an, einschließlich Typinformationen, Referenzen und Schlüsseleinschränkungen.

7
user4642897

Sie können die Tabellen in der aktuellen Datenbank mit \dt auflisten.

Fwiw, \d tablename zeigt Details zu der angegebenen Tabelle an, etwa show columns from tablename in MySQL, jedoch mit etwas mehr Informationen.

5
JohnK
select * from pg_catalog.pg_tables
where schemaname != 'information_schema' and schemaname != 'pg_catalog';
5

Verwenden von psql :\dt

Oder:

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
4
MisterJoyson

Zunächst einmal musst du dich mit deiner Datenbank verbinden

meine Datenbank ist ubuntu

verwenden Sie diesen Befehl, um eine Verbindung herzustellen

 \c ubuntu

Diese Nachricht wird angezeigt 

"Sie sind jetzt mit der Datenbank" ubuntu "als Benutzer" postgres "verbunden."

Jetzt

Führen Sie diesen Befehl aus, um alle Tabellen darin anzuzeigen 

\d+
3
Usman Yaqoob

\ dt listet Tabellen auf, und "\ pset pager off" zeigt sie im selben Fenster, ohne zu einem separaten zu wechseln. Liebe dieses Merkmal zu Tode in dbshell.

1
lauri108

als schneller 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'
0
Yordan Georgiev

Um fremde Tabellen in psql anzuzeigen, führen Sie \dE aus.

0
Ian Hunter