Pagination des résultats dans l'interpréteur de ligne de commande MySQL
Par Frederic Poeydomenge le vendredi, avril 14 2006, 12:40 - MySQL - Lien permanent
Lorsque l'on utilise MySQL en ligne de commande, il arrive parfois que l'on soit confronté à des requêtes renvoyant (beaucoup) plus de lignes que ne peut en contenir l'écran. Souvent, même, lorsque le nombre de colonnes est trop élevé, les enregistrements sont présentés sur plusieurs lignes, ce qui nuit grandement à la lisibilité.
Dans un cas comme dans l'autre, on attends en général devant un écran qui défile à vitesse grand V, jusqu'à ce que tous les enregistrements soient enfin affichés, sachant que le buffer du terminal n'a gardé en mémoire que les X dernières lignes (en général 1000) ce qui fait qu'il est parfois très difficile de s'y retrouver.
La solution, vue sur PHPCult, consiste à définir le pageur qui va être chargé de l'affichage des résultats :
mysql> \P less mysql> PAGER set to 'less' mysql> select foo from bar;
Et voilà ! Maintenant les résultats apparaissent à travers la commande less, ce qui est bien plus lisible que la sortie standard sur stdout, il faut l'avouer.
Pour désactiver le pageur, il suffit d'utiliser la commande :
mysql>
La documentation officielle MySQL précise que l'on peut utiliser n'importe quelle commande Unix pour le pageur, parmi lesquelles on peut trouver less, more, cat [> filename], et ainsi de suite (on peut même y passer des options, ou bien utiliser des pipes). Il faut tout de même savoir que cette option ne marche que sur Unix, et qu'elle ne fonctionne pas en mode batch.