8.6 Utiliser mysql en mode batch

Dans les sections précédentes, vous avez utilisé mysql de manière interactive pour entrer des requête et voir les résultats.Vous pouvez aussi utiliser mysql en mode batch. Pour cela, il faut mettre les commandes que vous souhaitez exécuter dans un fichier, puis indiquez à mysql qu'il faut l'utiliser comme fichier d'entrée.

shell> mysql < batch-file

Si vous devez préciser des paramètres de connexions sur la ligne de commande, elle peut ressembler à ceci :

shell> mysql -h host -u user -p < batch-file
Enter password: ********

Quand vous utilisez mysql de cette façon, vous créez un fichier de script, puis exécutez ce script.

Pourquoi utiliser un script ? Voici quelques réponses :

  • Si vous exécutez une requête de manière régulière (par exemple, tous les jours, toutes les semaines), utiliser un script vous évitera de tout retaper à la main à chaque fois.
  • Vous pouvez générer de nouvelles requêtes à partir d'autre requête déjà existantes, en utilisant le copier/coller.
  • Le mode batch peut être pratique lorsque vous développez des requêtes de plusieurs lignes, ou des séquences de requêtes. A chaque erreur, vous n'avez pas tout à retaper, mais juste la commande erronée. Il suffit pour ca d'éditer le script, et de le faire ré exécuter.
  • Si une requête génère beaucoup d'informations, vous pouvez les voir avec un outil adapté, plutôt que de les regarder simplement défiler sur l'écran.
shell> mysql < batch-file | more
  • Vous pouvez enregistrer les résultats dans un fichier pour les retraiter ailleurs
shell> mysql < batch-file > mysql.out
  • Vous pouvez distribuer le script à d'autres personnes, pour qu'ils puissent exécuter ces commandes aussi.
  • Certaines utilisations n'autorisent pas l'utilisation interactif, comme par exemple, la commande cron. Dans ce cas, il faut utiliser le mode batch.

Le format de réponse en mode batch est plus concis qu'en mode intéractif. Par exemple SELECT DISTINCT espece FROM animaux ressemble à ceci ,en mode intéractif :

+---------+
| espece  |
+---------+
| oiseau  |
| chat    |
| chien   |
| hamster |
| serpent |
+---------+

Mais en mode batch, il ressemble à ceci :

espece
oiseau
chat
chien
hamster
serpent

Pour obtenir un format de réponse " intéractif " à partir du mode batch, utilisez l'option mysql -t. Pour avoir aussi les commandes exécutées utilisez l'option mysql -vvv.