Blog

Blog

Psql

psql est un utilitaire en ligne de commandes qui permet d'exécuter des requêtes sur une base de données postgreSQL.

Connexion

Pour lancer psql, il faut lui indiquer a minima l'IP sur laquelle se connecter, le port sur lequel se connecter et le user avec lequel se connecter.
psql -h <host> -p <port> -U <user>
Normalement, psql vous demandera à ce moment là le mot de passe du user.
Si votre user n’a pas le même nom qu’une base de données, il faudra préciser le nom de la base de données pour vous connecter.
psql -h <host> -p <port> -U <user> -d <base>
Attention, <host> est plus souvent l’adresse IP de service que le nom de la machine !

Déconnexion

Pensez à vous déconnecter en quittant psql proprement. La simple méta-commande \q vous le permet.

Lancement d'un script

On peut exécuter un fichier sql avec psql et récupérer les logs générés de cette manière :
psql -h <host> -p <port> -U <user> -d <base> -f <nomFichier> 2>nomFichierTrace 1>&2

Requêtes SQL

Sous psql, on peut lancer des requêtes SQL. Ces requêtes peuvent être écrites sur plusieurs lignes. Veillez cependant à terminer vos requêtes par un point virgule ( ; ). Voici le prompt SQL normal :
<nombase>=#
Voici le prompt SQL qui indique qu’il attend la suite de la requête :
<nombase>-#
A tout moment, vous pouvez utiliser la touche « tabulation » pour obtenir une complétion automatique des noms d’objets SQL.

Meta-commands

Psql permet aussi d’envoyer des « méta-commandes » qui peuvent se révéler très pratiques. Voici une liste des plus utilisées :
\i <fichier> permet d’exécuter un fichier de commandes sql
\c <base> permet de se connecter à une base de données
\l permet de lister toutes les bases de données d’une instance
\dt permet de lister toutes les tables d’une base de données
\? permet de lister les méta-commandes de psql
\o <fichier> permet de stocker dans un fichier les résultats d’une requête
\h <commande> permet d’avoir la syntaxe de la commande SQL passée en argument

Pour aller plus loin

La documentation complète de psql est disponible ici :
8.1.5 : http://docs.postgresqlfr.org/8.1/app-psql.html
8.3.3 : http://docs.postgresqlfr.org/8.3/app-psql.html