Shell Script + MySQL

1. Shell Script + MySQL

Daniel Martins Lobo
daniel_martins

(usa Ubuntu)

Enviado em 06/06/2018 - 17:07h

Preciso fazer um script.sh que rode uma query no MySQL. Inicialmente fiz o script chamando um arquivo .SQL que contém a query, o script roda sem erros mas a query não é executada. Fiz da seguinte maneira:
#!/bin/bash
ExecutarScriptSQL(){

cd /opt/pdv/Scripts
mysql --user=xxx--password=xxx <$1
cd ..
}


Dentro dessa pasta "/opt/pdv/Scripts" tem o arquivo "Script.PDV.sql" que contém uma query simples, apenas um truncate em uma tabela:
USE `PDV`;

TRUNCATE TABLE LOG_OPERADOR;


Rodando no terminal: ./script.sh o Script roda sem erros, porém a query não é executada no mysql. Alguém poderia dar alguma ideia de como eu posso resolver isso ou quem sabe como incluir a query dentro do script.sh, já ajudaria também.

Desde já, muito obrigado.


  


2. Re: Shell Script + MySQL

Paulo Dias
di4s

(usa XUbuntu)

Enviado em 06/06/2018 - 17:45h

Oi, veja um exemplo, supondo que o nome do banco é fibra e a tabela é ctos fica asssim:


mysql -u root -p fibra -e 'select * from ctos';


Se quiser fornecer a senha no comando, faça assim:


mysql -u root -psenha fibra -e 'select * from ctos';


A senha deve ficar colada no -p

Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


3. Re: Shell Script + MySQL

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/06/2018 - 18:28h

daniel_martins escreveu:

Preciso fazer um script.sh que rode uma query no MySQL. Inicialmente fiz o script chamando um arquivo .SQL que contém a query, o script roda sem erros mas a query não é executada. Fiz da seguinte maneira:
#!/bin/bash
ExecutarScriptSQL(){

cd /opt/pdv/Scripts
mysql --user=xxx--password=xxx <$1
cd ..
}


Dentro dessa pasta "/opt/pdv/Scripts" tem o arquivo "Script.PDV.sql" que contém uma query simples, apenas um truncate em uma tabela:
USE `PDV`;

TRUNCATE TABLE LOG_OPERADOR;


Rodando no terminal: ./script.sh o Script roda sem erros, porém a query não é executada no mysql. Alguém poderia dar alguma ideia de como eu posso resolver isso ou quem sabe como incluir a query dentro do script.sh, já ajudaria também.

Desde já, muito obrigado.


Boa noite.
Veja este link:
http://thobias.org/doc/shell_bd.html

marcelo oliver


4. Re: Shell Script + MySQL

Daniel Martins Lobo
daniel_martins

(usa Ubuntu)

Enviado em 06/06/2018 - 18:36h


mysql -u root -psenha fibra -e 'select * from ctos';

Dessa forma deu certo, porém eu preciso executar truncate em várias tabelas. Teria como com um único script executar o truncate em várias tabelas? Tentei das maneiras abaixo mas deu erro:
mysql -u root -psenha PDV -e 'TRUNCATE TABLE OPERADORES,FINALIZADORAS';
mysql -u root -psenha PDV -e 'TRUNCATE TABLE OPERADORES'; 'TRUNCATE TABLE FINALIZADORAS';


5. Re: Shell Script + MySQL

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 06/06/2018 - 20:19h

Daniel,

O TRUNCATE funciona apenas em uma única tabela.

Essa query deve te ajudar, onde você deve alterar Table1, Table2, etc:
select 'Truncate table ' + TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME in ('Table1', 'Table2') 


Abraço,
Diego M. Rodrigues


6. Re: Shell Script + MySQL

Paulo Dias
di4s

(usa XUbuntu)

Enviado em 06/06/2018 - 21:02h

daniel_martins escreveu:


mysql -u root -psenha fibra -e 'select * from ctos';

Dessa forma deu certo, porém eu preciso executar truncate em várias tabelas. Teria como com um único script executar o truncate em várias tabelas? Tentei das maneiras abaixo mas deu erro:
mysql -u root -psenha PDV -e 'TRUNCATE TABLE OPERADORES,FINALIZADORAS';
mysql -u root -psenha PDV -e 'TRUNCATE TABLE OPERADORES'; 'TRUNCATE TABLE FINALIZADORAS';


Oi.

No seu script você pode colocar o nome das tabelas em um array e executar uma query para cada posição dele...

Algo assim:


#!/bin/bash

tabelas[0]="nome_tabela0" ;
tabelas[1]="nome_tabela1" ;
tabelas[2]="nome_tabela2" ;

for tabela in ${tabelas[@]} ; do

echo "select * from ${tabela}";

done;


Se quiser saber mais sobre array em shell script( bash ), veja esse artigo http://www.prminformatica.com.br/2013/01/iniciando-com-shell-script.html">http://www.prminformatica.com.br/2013/01/iniciando-com-shell-script.html


Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA
Oracle Certified Associate, Java SE Programmer - OCA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts