2399 Stimmen

PostgreSQL: Tabellen in PostgreSQL anzeigen

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

0 Stimmen

3430voto

Mihai Limbășan Punkte 59901

Von der psql Befehlszeilenschnittstelle,

Wählen Sie zunächst Ihre Datenbank

\c database_name

Dann werden alle Tabellen im aktuellen Schema angezeigt:

\dt

Programmatisch (oder über die psql Schnittstelle natürlich auch):

SELECT * FROM pg_catalog.pg_tables;

Die Systemtabellen befinden sich in der pg_catalog Datenbank.

127 Stimmen

@StephenCorwin Nein, \l ist das Äquivalent zu show databases in MySQL. dt show tables und l show databases

17 Stimmen

\dt ist sehr nützlich. Das pg_catalog.pg_tables ist viel weniger gut, da es scheint, interne Tabellen mit den vom Benutzer erstellten Tabellen für die Datenbank, mit der Sie gerade verbunden sind, zusammenzulegen.

35 Stimmen

psql my_db_name sollten der Reihe nach ausgeführt werden \dt zur Arbeit. Als ich lief psql ohne einen Datenbanknamen erhielt ich die Meldung "Keine Beziehungen gefunden".

225voto

JLarky Punkte 9015

Melden Sie sich als Superuser an:

sudo -u postgres psql

Sie können alle Datenbanken und Benutzer auflisten nach \l (Liste anderer Befehle nach \? ).

Wenn Sie nun andere Datenbanken sehen möchten, können Sie den Benutzer/die Datenbank ändern, indem Sie \c Befehl wie \c template1 , \c postgres postgres und verwenden \d , \dt o \dS um Tabellen/Ansichten/etc. zu sehen.

218voto

Yuci Punkte 22138

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

1. Psql starten

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

psql DBNAME USERNAME

Zum Beispiel, psql template1 postgres

Eine Situation, die Sie haben könnten, ist: Angenommen, Sie melden sich als Root an und wissen den Namen der Datenbank nicht mehr. Sie können ihn einfach zuerst in Psql eingeben, indem Sie ihn ausführen:

sudo -u postgres psql

Auf einigen Systemen ist der sudo-Befehl nicht verfügbar, Sie können stattdessen einen der beiden folgenden Befehle ausführen:

psql -U postgres
psql --username=postgres

2. Tabellen anzeigen

In Psql könnten Sie nun Befehle wie den folgenden ausführen:

  1. \? alle Befehle auflisten
  2. \l Listendatenbanken
  3. \conninfo Informationen über die aktuelle Verbindung anzeigen
  4. \c [DBNAME] Verbindung zu einer neuen Datenbank, z.B., \c template1
  5. \dt Tabellen des öffentlichen Schemas auflisten
  6. \dt <schema-name>.* Tabellen eines bestimmten Schemas auflisten, z. B., \dt public.*
  7. \dt *.* Tabellen aller Schemata auflisten
  8. Dann können Sie SQL-Anweisungen ausführen, z. B., SELECT * FROM my_table; (Hinweis: Eine Anweisung muss mit einem Semikolon abgeschlossen werden ; )
  9. \q psql beenden

162voto

Milen A. Radev Punkte 56874

(Der Vollständigkeit halber)

Sie könnten auch die (SQL-Standard-) Informationsschema :

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

3 Stimmen

+1 Obwohl mysql show tables der Vollständigkeit halber nur das aktuelle Schema anzeigt, ist es gut, es so zu sehen, dass mysql nur eine Datenbank, aber mehrere Schemata hat, während postgresql mehrere Datenbanken (Kataloge) und Schemata haben kann. Die Entsprechung sollte also table_schema='DB_NAME' sein;

0 Stimmen

Nicht gerade Standard-SQL, kann nicht "||" verwenden, um Strings auf mssql zu verketten

6 Stimmen

@ChRoNoN: das es Standard-SQL . || ist seit 1983 der String-Verkettungsoperator im SQL-Standard - nur MS SQL verwendet einen nicht standardmäßigen String-Verkettungsoperator.

56voto

nish Punkte 6600
  1. Erste Anmeldung als postgres-Benutzer:

    sudo su - postgres

  2. mit der gewünschten Datenbank verbinden: psql -d databaseName

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X