pspg, un pager dédié à psql
pspg est un outil annoncé récemment par Pavel Stehule, contributeur
régulier bien connu de la communauté PostgreSQL.
Il est disponible sur github et
installable par le classique ./configure; make ; sudo make install
sur les systèmes pourvus d’un compilateur C et de la bibliothèque ncurses.
Le “pager” ou paginateur est le programme externe appelé par psql
lorsqu’un résultat à afficher ne tient pas à l’écran, en largeur ou en
longueur. Par défaut c’est celui configuré pour le système,
more
et less
étant les plus
connus, sachant qu’il est remplaçable via la variable d’environnement PAGER
.
pspg est spécialement adapté aux résultats produits par psql, parce qu’il intègre la notion que le contenu est fait de champs organisés en colonnes et en lignes séparées par des bordures. Sont gérées les bordures ASCII par défaut, et Unicode pour des lignes mieux dessinées.
Dès la première utilisation, ce qui frappe est la colorisation marquée à la “Midnight Commander”, et les particularités du défilement horizontal et vertical commandés par les touches du curseur: la colonne la plus à gauche reste en place au lieu de disparaître vers la gauche de l’écran, et la ligne du haut avec les noms de colonnes est également fixe par rapport au défilement vertical.
L’effet est qu’on se déplace dans le jeu de résultats avec les flèches du curseur sans perdre des yeux les données les plus importantes pour se repérer. En effet, la première colonne affichée correspond souvent à une clef primaire qui détermine les autres colonnes. Mais si on souhaite qu’elle défile comme les autres, il suffira d’appuyer sur la touche “0”, et pour y revenir la touche “1”, ou bien entre “1” et “4” pour figer entre 1 et 4 colonnes. C’est très simple et pratique.
Et voici l’inévitable copie d’écran (un SELECT * from pg_type
avec
les bordures par défaut):
Le mode étendu \x
de psql, où chaque colonne est affiché sur une nouvelle ligne,
est aussi pris en compte, le défilement est normal et
le séparateur de lignes [ RECORD #N ]
est colorisé pour être encore plus visible.
On peut également faire de la recherche de texte en avant et arrière avec les
touches habituelles /
et ?
.
Outre les couleurs et ce mode de défilement vraiment spécifique, il y a quelques autres fonctionnalités qui diffèrent sensiblement de less:
- une ligne horizontale surlignée toujours présente qui accompagne les déplacements au curseur
- le support optionnel de la souris sur X-Window pour déplacer cette ligne au clic.
- une ligne d’état en haut de l’écran avec diverses infos de positionnement.
Cette addition à psql a été accueillie avec enthousiasme sur la liste pgsql-hackers, n’hésitez pas à l’installer si vous passez un tant soit peu de temps avec psql pour visualiser des données.