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-batchSi 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-batchAsí 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 | lessSe puede guardar
la salida en un archivo para revisarla posteriormente.
shell> mysql < archivo-batch > salida-del-script.txtSe
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
SerpienteDonde el fichero especies-distintas.sql contiene
la consulta a ejecutar. 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 |
+-----------+
|