anúncios

segunda-feira, 3 de dezembro de 2018

Executando querys SQL no script Shell

Sabia que é possível executar querys SQL do SGBD MySQL/Maria por meio de script Shell, de forma equivalente como faria com a linguagem PHP? Pois então, ao invés de colocar a query diretamente no terminal do MySQL, pode automatizar rotinas relacionados ao SGBD MySQL via script Shell.

Exemplo de script Shell com querys SQL
script Shell que lista os usuários e gera o resultado da query no arquivo users.txt
O exemplo a seguir deve substituir o nome da base de dados, usuário e a query correspondente a tabela de usuários que tiver criado no seu servidor MySQL
lista-users.sh
#!/bin/bash
mysql -u < user > -p < database > -B -B -e "SELECT * FROM users" > users.txt


script Shell que exibe o tempo que o servidor MySQL está no ar ou uptime
uptime-mysql.sh
!#/bin/bash
mysql -u < user > -p -B -N -e "SHOW STATUS LIKE 'Uptime'"


Execução do script uptime-mysql.sh
reginaldo@Saitam:~$ chmod +x uptime-mysql.sh 
reginaldo@Saitam:~$ ./uptime-mysql.sh 
Enter password: 
Uptime 19106
Interpretação dos argumentos utilizados no script
#! /bin/bash — esta primeira linha é especial. Ela invoca o Bash, que irá interpretar e executar as instruções contidas neste script.
# lista-users.sh | uptime-mysql.sh — nome do script Shell
mysql -u < user > -p — inicia a conexão com o usuário criado no MySQL
-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.

Referências

[1] https://elias.praciano.com/2015/03/como-executar-queries-mysql-de-uma-shell-script/

Feito!

2 comentários:

  1. Boa dica, você também pode usar o unix_socket caso queira que o script rode sem senha e sem a necessidade de memorizá-a em algum arquivo ou variável.

    ResponderExcluir
    Respostas
    1. Valeu. No caso autenticação unix_socket se aplicam a versão a partir do MySQL 5.7 / MariaDB 10.2 que usam esse tipo de autenticação.

      Excluir