XOOPS Brasil

 

3.5. Utilizando mysql em Modo Batch

Nas seções anteriores, você usou mysql interativamente para fazer consultas e ver os resultados. Você pode também executar mysql no modo batch. Para fazer isto, coloque os comando que você deseja executar em um arquivo, e diga ao mysqld para ler sua entrada do arquivo:

shell> mysql < batch-file

Se você estiver executando o mysql no Windows e tiver algum caracter especial no arquivo que provocou o problema, você pode fazer:

dos> mysql -e "source batch-file"

Se você precisa especificar parâmetros de conexão na linha de comando, o comando deve parecer com isto:

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

Quando você utilizar o mysql desta forma, você estará criando um arquivo script, depois executando o script.

Se você quiser que o script continue mesmo se hopuver erros, você deve usar a opção de linha de comando --force.

Por que usar um script? Existem várias razões:

  • Se você executa uma query repetidamente (digamos, todos os dias ou todas as semanas), transformá-lo em um script permite que você não o redigite toda vez que o executa.

  • Você pode gerar novas consultas a partir das já existentes copiando e editando os arquivos de script.

  • O modo batch pode também ser útil quando você estiver desenvolvendo uma consulta, particularmente para comandos de múltiplas linhas ou sequências de comandos com várias instruções. Se você cometer um erro, não será necessário redigitar tudo. Apenas edite seu arquivo script e corrija o erro, depois diga ao mysql para executá-lo novamente.

  • Se você tem uma query que produz muita saída, você pode encaminhar a saída através de um páginador.

    shell> mysql < batch-file | more
    
  • Você pode capturar a saída em um arquivo para processamento posterior:

    shell> mysql < batch-file > mysql.out
    
  • Você pode distribuir seu script para outras pessoas para que elas possam executar os comandos também.

  • Algumas situações não permitem uso interativo, por exemplo, quando você executa uma consulta através de um processo automático (cron job). Neste caso, você deve usar o modo batch.

A formato padrão de saída é diferente (mais conciso) quando você executa o mysql no modo batch do que quando você o usa interativamente. Por exemplo, a saída de SELECT DISTINCT species FROM pet se parece com isto quando você o executa interativamente:

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

Mas fica assim quando você o executa no modo batch:

species
bird
cat
dog
hamster
snake

Se você desejar obter o formato de saída interativa no modo batch, utilize mysql -t. Para mostrar a saída dos comandos que são executados, utilize mysql -vvv.

Você também pode utilizar scripts no prompt de linha de comando mysql usando o comando source:

mysql> source filename;