Introduzione

Quando si amministrano i server database PostgreSQL , una delle attività più comuni che probabilmente verranno eseguite è elencare i database e le relative tabelle.

PostgreSQL viene fornito con uno strumento interattivo chiamato psql che consente di connettersi al server ed eseguire query su di esso. Durante l'utilizzo di psql puoi anche sfruttare i suoi meta-commands. Questi comandi sono utili per gli script e l'amministrazione della riga di comando. Tutti i meta-commands iniziano con un unquoted backslash \  sono anche noti come comandi backslash commands (barra rovesciata).

Questo tutorial spiega come mostrare database e tabelle in un server PostgreSQL usando psql.

Prerequisiti

Per seguire questo tutorial, avrai bisogno di:

  • PostgreSQL correttamente installato sul tuo server/desktop. I comandi di seguito riportati dovrebbero funzionare sulla maggior parte delle distribuzioni Linux. Per installare PostgreSQL su Ubuntu 18.04 leggere questa guida. Per installare PostgreSQL su Debian 10 leggere questa guida.

Elencare i databases

Puoi connetterti al server PostgreSQL usando il comando psql come qualsiasi utente del sistema. A seconda della configurazione del server, l'utente potrebbe dover inserire la propria password per connettersi al terminale psql. Per accedere al terminale psql come utente attualmente connesso, digitare semplicemente psql.

Quando viene installato il pacchetto PostgreSQL, viene creato un utente amministrativo denominato "postgres". Per impostazione predefinita, questo utente può connettersi al server PostgreSQL locale senza una password.

Per accedere al terminale psql  come utente "postgres", eseguire:

sudo -u postgres psql

Dal terminale psql eseguire il meta-comando \l o \list per elencare tutti i database:

\l

L'output includerà il numero di database, il nome di ciascun database, il suo proprietario, la codifica e i privilegi di accesso:

                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 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
(3 rows)

Il server PostgreSQL ha tre database creati per impostazione predefinita, template0, template1 e postgres. I primi due sono modelli che vengono utilizzati durante la creazione di nuovi database.

Se si desidera ottenere maggiori informazioni sul database come le dimensioni e le descrizioni usare uno di questi due comandi \l+ o \list+. Le dimensioni del database verranno visualizzate solo se l'utente corrente può connettersi ad esso.

Un altro modo per elencare i database è usare la seguente istruzione SQL:

SELECT datname FROM pg_database;

A differenza del meta-comando \l, la query sopra solo i nomi dei database:

  datname  
-----------
 postgres
 odoo
 template1
 template0
(4 rows)

Per ottenere un elenco di tutti i database senza accedere alla shell psql, utilizzare l'opzione -c  come mostrato di seguito (se siete già connessi alla shell psql digitare exit):

sudo -u postgres psql -c "\l"

Elencare le tabelle del database

Per elencare tutte le tabelle di un particolare database è necessario connettersi ad esso utilizzando il meta-comando \c o \connect. L'utente che ha effettuato l'accesso al terminale psql deve essere in grado di connettersi al database.

Riconnettersi alla shell psql se non siete più connessi:

sudo -u postgres psql

Per connettersi al database denominato "template1", digitare:

\c template1

Dopo aver cambiato il database, utilizzare il meta-comando \dt per elencare tutte le tabelle del database. L'output includerà il numero delle tabelle, il nome di ciascuna tabella e il suo schema, tipo e proprietario.

Se il database è vuoto, l'output sarà simile al seguente:

No relations found.

Per ottenere informazioni sulle dimensioni delle tabelle e utilizzare le descrizioni utilizzare il meta-comando \dt+.

Conclusione

Abbiamo visto come elencare i database PostgreSQL  e le tabelle usando il comando psql.