Lorsqu'il s'agit d'administrer des bases de données Postgres, il existe une grande variété d'outils tiers disponibles tels que SQL Workbench/J ou pgAdmin III. Cependant, Postgres lui-même est livré avec un puissant outil de ligne de commande appelé psql
ce qui est idéal pour ceux qui connaissent le terminal ou qui cherchent à exécuter des tâches d'administration de scripts. L'une des tâches les plus courantes d'un administrateur de base de données consiste simplement à se familiariser avec l'environnement. Cela implique de poser des questions telles que « Quelles bases de données résident sur ce serveur ? » ou "Quelles tables sont stockées dans une base de données particulière sur ce serveur ?". Dans ce tutoriel, nous allons apprendre à répondre à ces questions clés depuis la ligne de commande en utilisant psql
.
Méta-commandes
En plus de pouvoir soumettre des requêtes SQL brutes au serveur via psql
vous pouvez également profiter du psql
méta-commandes pour obtenir des informations du serveur. Les méta-commandes sont des commandes qui sont évaluées par psql
et souvent traduit en SQL émis sur les tables système du serveur, ce qui permet aux administrateurs de gagner du temps lors de l'exécution de tâches de routine. Ils sont indiqués par une barre oblique inverse puis suivis de la commande et de ses arguments. Nous en verrons quelques exemples ci-dessous.
Liste des bases de données
Un seul processus serveur Postgres peut gérer plusieurs bases de données en même temps. Chaque base de données est stockée sous la forme d'un ensemble de fichiers distinct dans son propre répertoire dans le répertoire de données du serveur. Pour afficher toutes les bases de données définies sur le serveur, vous pouvez utiliser le \list
méta-commande ou son raccourci \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)
Changer de base de données
La plupart des serveurs Postgres ont trois bases de données définies par défaut :template0
, template1
et postgres
. template0
et template1
sont des bases de données squelettes qui sont ou peuvent être utilisées par le CREATE DATABASE
commande. postgres
est la base de données par défaut à laquelle vous vous connecterez avant de créer d'autres bases de données. Une fois que vous avez créé une autre base de données, vous voudrez y basculer afin de créer des tables et d'insérer des données. Souvent, lorsque vous travaillez avec des serveurs qui gèrent plusieurs bases de données, vous aurez fréquemment besoin de passer d'une base de données à l'autre. Cela peut être fait avec le \connect
méta-commande ou son raccourci \c
.
postgres=# \c sales
You are now connected to database "sales" as user "ubuntu".
sales=#
Liste des tableaux
Une fois que vous vous êtes connecté à une base de données, vous voudrez inspecter les tables qui y ont été créées. Cela peut être fait avec le \dt
méta-commande. Cependant, s'il n'y a pas de tables, vous n'obtiendrez aucune sortie.
sales=# \dt
No relations found.
sales=#
Après avoir créé une table, elle sera renvoyée dans une liste tabulaire des tables créées.
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=#