it-swarm-eu.dev

Wie liste ich alle Datenbanken und Tabellen mit psql auf?

Ich versuche, die PostgreSQL-Administration zu lernen, und habe begonnen, die Verwendung des Befehlszeilentools psql zu lernen.

Wie liste ich alle Datenbanken und Tabellen auf, wenn ich mich mit psql --username=postgres Anmelde?

Ich habe \d, d und dS+ Versucht, aber nichts ist aufgeführt. Ich habe mit pgAdmin III zwei Datenbanken und einige Tabellen erstellt, daher weiß ich, dass sie aufgelistet werden sollten.

1243
Jonas

Bitte beachten Sie die folgenden Befehle:

  • \list Oder \l: Alle Datenbanken auflisten
  • \dt: Listet alle Tabellen in der aktuellen Datenbank mit Ihrem search_path Auf.
  • \dt *.: Listet alle Tabellen in der aktuellen Datenbank auf, unabhängig von Ihrem search_path

Sie werden niemals Tabellen in anderen Datenbanken sehen, diese Tabellen sind nicht sichtbar. Sie müssen eine Verbindung zur richtigen Datenbank herstellen, um deren Tabellen (und andere Objekte) anzuzeigen.

So wechseln Sie die Datenbank:

\connect database_name Oder \c database_name

Siehe das Handbuch zu psql .

1639
Frank Heikens

Dies listet Datenbanken auf:

SELECT datname FROM pg_database
WHERE datistemplate = false;

Hier werden Tabellen in der aktuellen Datenbank aufgelistet

SELECT table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name;
381
RolandoMySQLDBA

In Postgresql listen diese Terminalbefehle die verfügbaren Datenbanken auf

[email protected]$ /bin/psql -h localhost --username=pgadmin --list

Oder der Befehl sagte einfacher:

psql -U pgadmin -l

Diese Befehle drucken dies auf dem Terminal:

                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 kurz_prod | pgadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 pgadmin   | pgadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(5 rows)

Dies sind die verfügbaren Datenbanken.

In PSQL listen diese Befehle die verfügbaren Tabellen auf

Sie müssen eine Datenbank angeben, bevor Sie die Tabellen in dieser Datenbank auflisten können.

[email protected]$ psql -U pgadmin -d kurz_prod

Dies bringt Sie zu einem psql-Terminal:

kurz_prod=#

Verwenden Sie den Befehl \d bedeutet, alle Tabellen, Ansichten und Sequenzen anzeigen

kurz_prod=# \d

Dies druckt:

           List of relations
Schema |  Name   |   Type   |  Owner
--------+---------+----------+---------
public | mytable | table    | pgadmin
public | testing | sequence | pgadmin
(2 rows)

Um das psql-Terminal zu verlassen, geben Sie \q und drücken Sie die Eingabetaste. Oder Ctrl-D macht das Gleiche. Dies sind die Tabellen in dieser Datenbank.

112
Eric Leschinski

\l Ist auch eine Abkürzung für \list. Es gibt einige Schrägstriche, die Sie mit \? In psql auflisten können.

74
Derek Arnold

Um weitere Informationen zur Datenbank- und Tabellenliste zu erhalten, haben Sie folgende Möglichkeiten:

\l+ um Datenbanken aufzulisten

                                                                    List of databases
    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   |  Size   | Tablespace |                Description
------------+----------+----------+-------------+-------------+-----------------------+---------+------------+--------------------------------------------
 pgbench    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 29 MB   | pg_default |
 postgres   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 6073 kB | pg_default | default administrative connection database
 slonmaster | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 1401 MB | movespace  |
 slonslave  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 32 MB   | pg_default |
 template0  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +| 5785 kB | pg_default | unmodifiable empty database
            |          |          |             |             | postgres=CTc/postgres |         |            |
 template1  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +| 5985 kB | pg_default | default template for new databases
            |          |          |             |             | postgres=CTc/postgres |         |            |
 test       | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 13 MB   | pg_default |
(7 rows)

und

\d+, um alle Tabellen im aktuellen Suchpfadschema in der aktuellen Datenbank aufzulisten.

test=# \dn+ --list schemas
                          List of schemas
  Name  |  Owner   |  Access privileges   |      Description       
--------+----------+----------------------+------------------------
 public | postgres | postgres=UC/postgres+| standard public schema
        |          | =UC/postgres         | 
schema1 | postgres | postgres=UC/postgres+| 
        |          | =UC/postgres         | 
(2 row)

test=# set search_path to schema1, public;
SET
test=# \d+
                                  List of relations
     Schema  |      Name       | Type  |    Owner     |    Size    | Description
    ---------+-----------------+-------+--------------+------------+-------------
     public  | all_units       | table | postgres     | 0 bytes    |
     public  | asset           | table | postgres     | 16 kB      |
     public  | asset_attribute | table | postgres     | 8192 bytes |
     public  | food            | table | postgres     | 48 kB      |
     public  | name_log        | table | postgres     | 8192 bytes |
     public  | outable         | table | ordinaryuser | 0 bytes    |
     public  | outable2        | table | ordinaryuser | 0 bytes    |
     public  | test            | table | postgres     | 16 kB      |
     public  | usr             | table | postgres     | 5008 kB    |
     schema1 | t1              | table | postgres     | 0 bytes    |
    (10 rows)
36
Soni Harriz

In pg_Admin können Sie einfach Folgendes in Ihrer aktuellen Datenbank ausführen und alle Tabellen für das angegebene Schema abrufen:

SELECT * 
FROM information_schema.tables 
WHERE table_type = 'BASE TABLE' 
    AND table_schema = 'public' 
ORDER BY table_type, table_name

Dadurch erhalten Sie eine Liste aller permanenten Tabellen (im Allgemeinen die Tabellen, nach denen Sie suchen). Sie können nur die Tabellennamen erhalten, wenn Sie den Platzhalter * In nur den Platzhalter table_name Ändern. Das öffentliche table_schema Ist das Standardschema für die meisten Datenbanken, es sei denn, Ihr Administrator hat ein neues Schema eingerichtet.

33
Larry W

Es ist möglich, dass Sie die Tabellen in ein Schema eingefügt haben, das sich nicht in Ihrem Suchpfad befindet, oder in die Standardeinstellung, dh public, und die Tabellen daher nicht mit\dt angezeigt werden. Wenn Sie ein Schema verwenden, das beispielsweise Daten heißt, können Sie dies beheben, indem Sie Folgendes ausführen:

alter database <databasename> set search_path=data, public;

Beenden Sie psql und geben Sie es erneut ein.\Dt zeigt Ihnen nun auch die Tabellen in den Schemadaten an.

19
John Powell