13. Usando mysql en modo batch
MySQL (MySQL Hispano)
13. Usando mysql en modo batch
En todos los ejemplos mostrados anteriormente, hemos usado mysql de manera interactiva para ejecutar algunas consultas y ver los resultados. Sin embargo, es posible usar mysql en modo batch. Para hacer esto tenemos que poner los comandos que deseamos ejecutar dentro de un archivo, y entonces decirle a mysql que lea los comandos de dicho archivo:
shell> mysql < archivo-batch
Si se usa mysql de esta manera, se está creando un pequeño script, y posteriormente se está ejecutando dicho script.
Al ejecutar las sentencias y comandos que se encuentran en el script, es posible que suceda algún error. Si se desea que se continuen ejecutando las demás sentencias, a pesar de que haya ocurrido un error, se tiene que usar la opción --force
shell> mysql --force < archivo-batch
Así mismo, es posible especificar los parámetros de conexión desde la línea de comandos. Por ejemplo:
shell> mysql -h casita -u blueman -p < archivo-batch
¿Por qué usar un script?
Aquí hay algunas cuantas razones:
-
Si se ejecutan un cierto número de consultas frecuentemente (cada día, o cada semana), al hacer un script nos evitamos tener que volver a teclear cada una de las consultas.
-
Se pueden generar nuevas consultas que sean similares a las existentes al copiar y editar estos scripts.
-
Al escribir consultas de varias líneas, los scripts ayudan bastante para que no se tengan que escribir todas las líneas nuevamente si se comete algún error.
- Si se están ejecutando consultas que producen una gran cantidad de datos, es posible usar un paginador para examinar los resultados de una mejor manera.
shell> mysql < archivo-batch | less
- Se puede guardar la salida en un archivo para revisarla posteriormente.
shell> mysql < archivo-batch > salida-del-script.txt
-
Se pueden distribuir los scripts a otras personas para que puedan ejecutar también nuestros comandos y sentencias.
- En algunas situaciones no se permite el uso interactivo de mysql. Por ejemplo cuando se ejecuta un cron. En este caso, es indispensable usar el modo batch.
Cabe mencionar que el formato de la salida es diferente (más conciso) cuando se ejecuta mysql en modo batch, que cuando se usa de manera interactiva.
Ver el siguiente ejemplo.
La consulta es: SELECT DISTINCT especie FROM mascotas.
Si se ejecuta en modo interactivo:
mysql> SELECT DISTINCT especie FROM mascotas;
+-----------+
| especie |
+-----------+
| Gato |
| Perro |
| Ave |
| Serpiente |
+-----------+
4 rows in set (0.00 sec)
Si se ejecuta en modo batch:
shell> mysql -h casita -u blueman -p < especies-distintas.sql
Enter password: ******
especie
Gato
Perro
Ave
Serpiente
Si se desea obtener la salida que proporciona el modo interactivo, se tiene que usar la opción -t.
shell> mysql -t -h casita -u blueman -p < especies-distintas.sql
Enter password: ******
+-----------+
| especie |
+-----------+
| Gato |
| Perro |
| Ave |
| Serpiente |
+-----------+