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 < batch-file
Si está ejecutando mysql en Windows y el archivo contiene algunos caracteres causantes de problemas, el comando es así:
C:\> mysql -e "source batch-file
"
Si se necesitara incluir parámetros de conexión en la línea de comandos, el comando podría verse así:
shell> mysql -hhost
-uuser
-p <batch-file
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 --force
.
¿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 <
batch-file
| more -
Se puede enviar la salida a un archivo, para posterior proceso:
shell> mysql <
batch-file
> 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 SELECT DISTINCT
species FROM pet
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 mysql -t
. Para
incluir en la salida los comandos que se ejecutan, utilice
mysql -vvv
.
También pueden ejecutarse archivos de script desde el prompt
mysql utilizando los comandos
source
o \.
mysql> source filename; mysql> \. filename