3.5. Usar mysql en modo batch

MySQL 5.0

3.5. Usar mysql en modo batch

En las secciones previas mysql fue utilizado interactivamente para ejecutar consultas y ver resultados. También se lo puede ejecutar en un modo por lotes. Para hacer esto, los comandos que se desean ejecutar deben colocarse en un archivo, y posteriormente indicarle a mysql que acepte como entrada el contenido del mismo.

shell> mysql < 

Si está ejecutando mysql en Windows y el archivo contiene algunos caracteres causantes de problemas, el comando es así:

C:\> mysql -e "source "

Si se necesitara incluir parámetros de conexión en la línea de comandos, el comando podría verse así:

shell> mysql -h  -u  -p < 
Enter password: ********

Cuando se procede de este modo lo que se está haciendo es crear un archivo script, que luego es ejecutado.

Si se desea que el script continúe su ejecución aún si alguna de sus sentencias produce errores, se debería usar la opción de línea de comandos .

¿Porqué usar scripts? Algunas razones:

  • Si se utiliza una consulta repetidamente (como ser, cada dia o cada semana), hacer un script evitará volver a tipearla cada vez que se desea ejecutarla.

  • Se pueden crear nuevas consultas a partir de otras existentes que se le parezcan, copiando y editando el archivo de script.

  • El modo por lotes también puede ser útil cuando se está creando una consulta, en especial si tiene comandos de múltiples lineas o múltiples sentencias. Si se comete un error, no se necesita retipear todo. Solamente editar el script, para corregir el error, y volver a ejecutarlo mediante mysql.

  • Si se ejecuta una consulta que produce una salida muy extensa, se puede ejecutar a traves de un paginador en lugar de verla desaparecer rápidamente por la parte superior de la pantalla:

    shell> mysql <  | more
    
  • Se puede enviar la salida a un archivo, para posterior proceso:

    shell> mysql <  > mysql.out
    
  • Se puede distribuir el script a otras personas, para que puedan tambien ejecutar los comandos.

  • Algunas situaciones no permiten la interactividad, por ejemplo, cuando se ejecuta una consulta a través de una tarea de cron (en Unix). En este caso, debe emplearse el modo por lotes.

El formato de salida es más breve cuando se usa modo por lotes que cuando se utiliza mysql interactivamente. Por ejemplo, la salida devuelta para se ve así cuando se ejecuta en modo interactivo:

+---------+
| species |
+---------+
| bird    |
| cat     |
| dog     |
| hamster |
| snake   |
+---------+

Mientras que, en modo por lotes, presenta este aspecto:

species
bird
cat
dog
hamster
snake

Si desea obtener el formato por lotes para una salida producida interactivamente, utilice . Para incluir en la salida los comandos que se ejecutan, utilice .

También pueden ejecutarse archivos de script desde el prompt mysql utilizando los comandos o

mysql> source filename;
mysql> \. filename