Was ist das Äquivalent zu show tables
(von MySQL) in PostgreSQL?
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.
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.
(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');
Erster Login als Postgres-Benutzer:
Sudo su - postgres
verbinden Sie sich mit der erforderlichen Datenbank: psql -d databaseName
\dt
würde die Liste aller Tabellen in der Datenbank zurückgeben, mit denen Sie verbunden sind.
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:
\?
liste alle Befehle auf\l
listet Datenbanken auf\conninfo
zeigt Informationen zur aktuellen Verbindung an\c [DBNAME]
stellt eine Verbindung zu einer neuen Datenbank her, z. B. \c template1
\dt
listet Tabellen aufSELECT * FROM my_table;
(Hinweis: Eine Anweisung muss mit einem Semikolon ;
abgeschlossen werden.)\q
psql beendenWenn 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;
**************************
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
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
verwenden Sie nur Tabellen
=> \dt
wenn Sie Schematabellen sehen möchten
=>\dt+
wenn Sie bestimmte Schematabellen sehen möchten
=>\dt schema_name.*
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';
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
\ 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.
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.
select * from pg_catalog.pg_tables
where schemaname != 'information_schema' and schemaname != 'pg_catalog';
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
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+
\ 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.
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'
Um fremde Tabellen in psql anzuzeigen, führen Sie \dE
aus.