Quando si tratta di amministrare i database Postgres, è disponibile un'ampia varietà di strumenti di terze parti come SQL Workbench/J o pgAdmin III. Tuttavia, Postgres stesso viene fornito in bundle con un potente strumento da riga di comando chiamato psql
che è ottimo per chi ha familiarità con il terminale o cerca di eseguire script di attività di amministrazione. Una delle attività più comuni eseguite da un amministratore di database è semplicemente acquisire familiarità con l'ambiente. Ciò comporta porre domande come "Quali database risiedono su questo server?" o "Quali tabelle sono archiviate in un determinato database su questo server?". In questo tutorial impareremo come rispondere a queste domande chiave dalla riga di comando usando psql
.
Meta-comandi
Oltre a poter inviare query SQL grezze al server tramite psql
puoi anche sfruttare il psql
meta-comandi per ottenere informazioni dal server. I meta-comandi sono comandi valutati da psql
e spesso tradotto in SQL che viene emesso rispetto alle tabelle di sistema sul server, facendo risparmiare tempo agli amministratori durante l'esecuzione di attività di routine. Sono indicati da una barra rovesciata e quindi seguiti dal comando e dai suoi argomenti. Di seguito ne vedremo alcuni esempi.
Elencare i database
Un singolo processo del server Postgres può gestire più database contemporaneamente. Ciascun database viene archiviato come un insieme separato di file nella propria directory all'interno della directory dei dati del server. Per visualizzare tutti i database definiti sul server è possibile utilizzare il \list
meta-comando o la sua scorciatoia \l
.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
sales | ubuntu | 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
(4 rows)
Scambio di database
La maggior parte dei server Postgres ha tre database definiti di default:template0
, template1
e postgres
. template0
e template1
sono database scheletrici che sono o possono essere utilizzati da CREATE DATABASE
comando. postgres
è il database predefinito a cui ti connetterai prima di aver creato qualsiasi altro database. Dopo aver creato un altro database, ti consigliamo di passare ad esso per creare tabelle e inserire dati. Spesso, quando si lavora con server che gestiscono più database, è necessario passare frequentemente da un database all'altro. Questo può essere fatto con il \connect
meta-comando o la sua scorciatoia \c
.
postgres=# \c sales
You are now connected to database "sales" as user "ubuntu".
sales=#
Tabelle degli elenchi
Dopo esserti connesso a un database, vorrai ispezionare quali tabelle sono state create lì. Questo può essere fatto con il \dt
metacomando. Tuttavia, se non ci sono tabelle, non otterrai alcun output.
sales=# \dt
No relations found.
sales=#
Dopo aver creato una tabella, verrà restituita in un elenco tabellare di tabelle create.
sales=# CREATE TABLE leads (id INTEGER PRIMARY KEY, name VARCHAR);
CREATE TABLE
sales=# \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+--------
public | leads | table | ubuntu
(1 row)
sales=#