mysql script tutorial

Como executar queries MySQL de uma shell script.

É 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.
pícture of a mountain and mysql logo
É 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.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como “Rick and Morty” e “BoJack Horseman”.
Me siga no Twitter e vamos trocar ideias!

One thought on “Como executar queries MySQL de uma shell script.”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *