É possível inserir queries MySQL dentro de scripts shell, da mesma forma que você faria com a linguagem PHP, Perl etc.
Em vez de invocar o MySQL diretamente da linha de comando do console Bash ou digitar suas queries dentro do cliente MySQL, é possível automatizar atividades rotineiras. relacionados a bancos de dados, com scripts.
É comum realizar este trabalho com o uso da linguagem Perl (com a interface DBI), no Linux/UNIX. Mas, se o que você quer, precisa ser feito rapidamente e não for muito complicado, pode ser mais interessante usar shell scripts.
Ao usar o MySQL na linha de comando, é possível pós processar os resultados com outros comandos da shell, filtrar as saídas e obter resultados mais relevantes.
Exemplos de shell scripts com comandos SQL
O script que segue serve para exibir o tempo em que o seu servidor MySQL está no ar ou uptime.
O script vai executar uma query SHOW STATUS
para obter o valor da variável do status que contém o uptime
(em segundos).
Abra o seu editor de texto favorito e digite o código abaixo:
#! /bin/sh # myuptime.sh - exibe o uptime total do servidor em segundos mysql -u root -p -B -N -e "SHOW STATUS LIKE 'Uptime'"
É importante que se diga que o editor de texto, para escrever código de programas, não pode inserir formatação dentro do script. Use um editor de texto puro, como o nano, o vi, gedit, mousepad etc.
Agora, torne o arquivo script myuptime.sh
executável:
chmod +x ./myuptime.sh
Feito isto, execute-o:
./myuptime.sh
O script vai pedir a senha de root do servidor MySQL, antes de mostrar o resultado:
Enter password: Uptime 3180
Entenda o script linha a linha
#! /bin/sh
— esta primeira linha é especial. Ela invoca o Bash, que irá interpretar e executar as instruções contidas neste script.# myuptime.sh ...
— linhas que começam com # são comentários e, portanto, não são executadas.mysql -u root -p
— se você já é iniciado no MySQL, sabe que esta parte da instrução inicia o cliente, faz login e pede a senha do usuário root.-B
— gera uma saída batch. Exibe os resultados, usando a caractere tab como separador de colunas.-N
— suprime o cabeçalho da coluna. Assim temos uma saída mais limpa.-e "SHOW STATUS LIKE 'Uptime'"
— este é o “miolo” do nosso script — onde a mágica acontece.
Experimente remover as opções -B -N
, para ver o que acontece.
Altere a linha mysql -u root -p -B -N -e "SHOW STATUS LIKE 'Uptime'"
, no script, para mysql -u root -p -e STATUS | grep -i uptime
.
Eu obtive o seguinte resultado, após esta alteração:
Uptime: 1 hour 18 min 42 sec
Leia mais
Conheça outras formas de executar queries MySQL da linha de comando e que podem ser usadas dentro de seus scripts.
Entenda melhor o comando grep, para filtrar os seus resultados e excluir informações irrelevantes.
Saiba como pegar queries do histórico do MySQL.
One reply on “Como executar queries MySQL de uma shell script.”
Obrigado amigo, me ajudou muito!