Comment personnaliser l’invite PostgreSQL avec psqlrc sur Ubuntu 14.04

introduction

Le fichier psqlrc personnalise le comportement du client de ligne de commande interactive psql. psql vous permet de taper des requêtes de manière interactive, de les envoyer à PostgreSQL et de voir les résultats de la requête. Le fichier est disponible en trois versions:

{vide} 1) Le fichier psqlrc à l’échelle du système se trouve dans le répertoire de configuration système de PostgreSQL.

L’emplacement de ce répertoire dépend de votre installation PostgreSQL, mais peut être trouvé à l’aide de l’outil pg_config.

pg_config --sysconfdir

{vide} 2) Le fichier utilisateur psqlrc est trouvé ou peut être créé dans le répertoire de base de l’utilisateur.

touch ~/.psqlrc

{vide} 3) Des fichiers psqlrc spécifiques à la version peuvent être créés s’il existe plusieurs installations PostgreSQL. Ajoutez simplement le numéro de version à la fin.

touch ~/.psqlrc-9.1
touch ~/.psqlrc-9.3

Installation

Avant de pouvoir utiliser psql, vous devez avoir installé PostgreSQL.

sudo apt-get install -y postgresql postgresql-contrib

Cela installera PostgreSQL 9.3. Maintenant, vous pouvez passer à l’utilisateur postgres et lancer psql.

su - postgres

psql

Cela devrait afficher l’invite standard psql.

psql (9.3.4)
Type "help" for help.

postgres=#

Modification de l’invite

En modifiant le fichier utilisateur psqlrc, vous pouvez personnaliser l’invite principale de psql (PROMPT1) et créer des raccourcis utiles. Editez le fichier .psqlrc avec l’éditeur de votre choix pour ajouter les lignes suivantes (ici, nous utiliserons vim).

vi ~/.psqlrc

\set PROMPT1 '%M:%> %n@%/%R%#%x '
  • % M fait référence au nom d’hôte du serveur de base de données - est «[local]» si la connexion est établie via un socket de domaine Unix.

  • %> fait référence au port d’écoute

  • % n fait référence au nom d’utilisateur de la session

  • % / fait référence à la base de données actuelle

  • % R indique si vous êtes en mode ligne unique (^) ou déconnecté (!) Mais que vous êtes normalement =

  • % # indique si vous êtes un superutilisateur (#) ou un utilisateur régulier (>)

  • % x fait référence au statut de la transaction - généralement vide sauf dans un bloc de transaction (*)

Si vous êtes connecté à une machine avec le nom d’hôte “trident” en tant qu’utilisateur “john” et en accédant à la base de données “orange” en tant qu’utilisateur ordinaire, vous verrez:

[trident]:5432 john@orange=>

Vous pouvez également modifier l’invite psql secondaire (PROMPT2).

postgres-#

Vous rencontrerez l’invite secondaire lorsque vous avez une requête inachevée.

postgres=# select * from
postgres-# peel limit 1;

La modification de l’invite psql secondaire est généralement similaire à celle de l’invite psql principale.

\set PROMPT2 '%M %n@%/%R %# '
  • % R est représenté par ’-’ au lieu de ’=’

Lorsque vous êtes au milieu d’une transaction sur la machine avec le nom d’hôte “trident” en tant qu’utilisateur “john” et en accédant à la base de données “orange” en tant qu’utilisateur ordinaire, vous verrez

[trident]:5432 john@orange=> select * from
[trident] john@orange-> peel limit 1;

Bien sûr, vous pouvez ajouter, supprimer ou réorganiser ces options pour inclure des informations utiles.

Couleurs

La couleur de l’invite peut être modifiée avec le psqlrc. Pour que le numéro de port soit rouge, ajoutez ce qui suit.

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '

Vous pouvez utiliser différentes couleurs - modifiez la valeur 31 en:

  • 32 pour le vert

  • 33 pour le jaune

  • 34 pour le bleu

  • 35 pour le magenta

  • 36 pour le cyan

  • 37 pour le blanc

option d’affichage

Lorsque vous interrogez une base de données PostgreSQL, les valeurs NULL renvoient un blanc. Si vous souhaitez plutôt que la valeur NULL soit renvoyée, vous pouvez modifier l’option null.

\pset null '[null]'

Pour compléter les mots-clés SQL tels que «SELECT» et «FROM» en majuscules ou en minuscules, vous pouvez définir l’option COMPKEYWORDCASE avec les options majuscule ou minuscule.

\set COMP_KEYWORD_CASE upper

Pour que toutes les requêtes affichent les temps de requête à l’aide de l’option Activer le minutage.

\timing

Comme dans l’invite bash, dans l’invite psql, vous pouvez appuyer sur la flèche vers le haut pour accéder aux commandes précédemment exécutées via l’historique. Pour définir la taille de l’historique, vous pouvez modifier HISTSIZE.

\set HISTSIZE 2000

Lors de l’interrogation de tables volumineuses, la sortie restitue parfois un texte difficile à lire. Vous pouvez passer au format de tableau étendu.

\x auto

Vous pouvez également définir la verbosité des rapports d’erreur avec les options «par défaut», «verbose» ou «laconique».

\set VERBOSITY verbose

Vous pouvez également configurer des raccourcis avec la commande set. Si vous souhaitez configurer un raccourci pour voir la version de PostgreSQL et les extensions disponibles, ajoutez ce qui suit:

\set version 'SELECT version();'
\set extensions 'select * from pg_available_extensions;'

Si vous souhaitez afficher des messages au démarrage de l’invite psql, vous pouvez utiliser la commande echo.

\echo 'Welcome to PostgreSQL\n'

Enfin, l’édition de psqlrc crée des sorties au démarrage de psql. Si vous souhaitez les masquer, activez le drapeau QUIET en haut et en bas du fichier psql.

Emballer

Le fichier complet est ci-dessous.

\set QUIET 1

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '

\set PROMPT2 '%M %n@%/%R %# '

\pset null '[null]'

\set COMP_KEYWORD_CASE upper

\timing

\set HISTSIZE 2000

\x auto

\set VERBOSITY verbose

\set QUIET 0

\echo 'Welcome to PostgreSQL! \n'
\echo 'Type :version to see the PostgreSQL version. \n'
\echo 'Type :extensions to see the available extensions. \n'
\echo 'Type \\q to exit. \n'
\set version 'SELECT version();'
\set extensions 'select * from pg_available_extensions;'

Maintenant, lorsque vous démarrez psql, vous verrez une invite différente.

$ psql

Welcome to PostgreSQL!

Type :version to see the version.

Type :extensions to see the available extensions.

Type \q to exit.

psql (9.3.4)
Type "help" for help.

[local]:5432 postgres@postgres=#

Vous pouvez effectuer de nombreuses autres personnalisations, mais elles devraient constituer un bon début pour améliorer votre expérience psql.