terça-feira, 24 de maio de 2011

Shell script de inserção em base de dados MYSQL

Como estou com o saco meu cheio ... Não achando mais o erro resolvi colocar meu shell script parcial baseado em http://thobias.org/doc/shell_bd.html"

#!/bin/bash
#EsseShellScript=/home/danilo/scripts/testeSGDB.sh ;
#$/bin/bash /home/danilo/scripts/testeSGDB.sh ;
arquivoComOsDadosJaFormatados=/home/danilo/Documentos/compartilhadaSAMBA0777/testes/arquivoFormatadoTestes.txt ;
arquivo_SQL_gerado=/home/danilo/Documentos/compartilhadaSAMBA0777/testes/sql_gerado.sql ;
usuarioDoBD=shell ;
senhadousuarioDoBD=shell ;
usuarioDoBD2=root ;
senhadousuarioDoBD2=udesc ;
dBdousuarioDoBD=mysql_bash ;
Agenda=agenda ;
Nome=nome ;
#Outra possibilidade é fazer um script para ler do teclado uma nova entrada para a base:

# prompt> cat input_3.sh
#!/bin/bash
#
# Repare que a data para o MySQL é aaaa-mm-dd
#
#
# Testa se a data recebida, no formato do MySQL, é válida ou não
#checa_data(){
#[ $(echo "$1" | sed 's,[12][0-9]\{3\}/\(0[1-9]\|1[012]\)/\(0[1-9]\|[12][0-9]\|3[01]\),,') ] &&
#return 1 || return 0
#}
#
#echo "Entre com os dados para incluir na agenda"
#echo
#read -p "Nome : " nome
#read -p "Telefone : " fone
#read -p "E-Mail : " mail
#read -n2 -p "Aniversário (dia/mes/ano): " dia
#read -n2 -p "/" mes
#read -n4 -p "/" ano
#echo

#colocamos na variável aniver a data no formato do MySQL
#aniver="$ano/$mes/$dia"
#echo

# se a data não for nula
#if [ "$ano" -o "$mes" -o "$dia" ];then
# testa se a data é válida
# checa_data "$aniver" || { echo "ERRO: Data de aniversário inválida";exit; }
#fi

# não aceitamos nomes nulo
# [ "$nome" ] || { echo "ERRO: nome inválido";exit; }

# read -p "Deseja Incluir (s/n)? "
#if [ "$REPLY" = "s" ];then
# mysql -u thobias -e\
# "INSERT INTO agenda VALUES('$nome','$fone','$mail','$aniver')" $dBdousuarioDoBD
#
# [ "$?" = "0" ] && echo "Operacao OK" || echo "Operação: ERRO"
#fi
#
#prompt>
#
#Executando:
#
# prompt> ./input_3.sh
#Entre com os dados para incluir na agenda
#
#Nome : Formiga Atomica
#Telefone :
#E-Mail : formiga@formigueiro.com
#Aniversário (dia/mes/ano): 12/12/1930
#
#Deseja Incluir (s/n)? s
#Operacao OK
#prompt>
#

function clearSCREEN()
{
clear; clear; clear;
}
function explicacaoDoqueFoiFeito()
{
echo "";
}
function funcaoCabecario()
{
echo -e "\n Exemplo de shell script simples para demonstrar a conexão com banco de dados mysql \n Por Danilo Matias. \n Nenhum direito reservado, nenhuma restrição relacionada à distribuição dele , apenas não me responsabilizo pela utilização desse shell script em qualquer ambiente que seja.\n Ele apenas serve para provar que sei programar em shell script, e caso alguém queira implementar um sistema com acesso a banco de dados em shell script, pode verificar um exemplo de como se faz \n \
Apenas lembrando, que o acesso a banco da dados em shell script é o acesso que o usuário pode fazer com uma linha de comando em modo texto, devido a isso, ele é extremamente flexível\n \
Tomara que seja útil para mais alguém, pois para mim está sendo para demonstrar as funcionalidades, tudo o que foi feito aqui, foi baseado no que o colega Thobias Salazar Trevisan colocou em seu sítio (Site, homepage, página web, página de internet ...), \n http://thobias.org/doc/shell_bd.html \
\n \
Qualquer dúvida acesse o site do Thobias, muito bom mesmo!\
\n Um grande abraço !\
\n" ;
#firefox http://thobias.org/doc/shell_bd.html http://www.youtube.com/watch?v=MVO8OO0Y0UU&feature=related

explicacaoDoqueFoiFeito

}
function inserirApartirDeArquivoPreviamenteFormatado(){
IFS=:
# a linha acima indica que o separador é o ":"
while read nome fone mail aniver;do
echo
echo "Nome: $nome"
echo "Telefone: $fone"
echo "mail: $mail"
echo "Aniversário: $aniver"

mysql -u $usuarioDoBD -f -e \
"INSERT INTO $Agenda VALUES('$nome','$fone','$mail','$aniver')" $dBdousuarioDoBD

[ "$?" = "0" ] && echo "Operacao OK" || echo "Operação: ERRO"
done < $arquivoComOsDadosJaFormatados
}

function criarArquivo_SQL_ApartirDeArquivoPreviamenteFormatado(){
IFS=:
# a linha acima (IFS=:) indica que o separador é o ":"
while read nome fone mail aniver;do
echo "INSERT INTO $Agenda VALUES('$nome','$fone','$mail','$aniver');">>$arquivo_SQL_gerado ;
done < $arquivoComOsDadosJaFormatados
}
function inserirDadosApartirDeArquivo_SQL_gerado(){
mysql -u $usuarioDoBD -f $dBdousuarioDoBD < $arquivo_SQL_gerado ;
}
function inserirDadosApartirDeArquivo_SQL_gerado2(){
criarArquivo_SQL_ApartirDeArquivoPreviamenteFormatado
inserirDadosApartirDeArquivo_SQL_gerado
}

function inserirDadosApartirDeArquivo_SQL_gerado3_1(){
cat $arquivo_SQL_gerado | mysql -u $usuarioDoBD -f $dBdousuarioDoBD
}
function inserirDadosApartirDeArquivo_SQL_gerado3(){
criarArquivo_SQL_ApartirDeArquivoPreviamenteFormatado
inserirDadosApartirDeArquivo_SQL_gerado3_1
}
function select_Agenda_simples1(){
# essa função não está funcionando direito, para não perder muito tempo partirei para o resto
#tente achar o erro
# Testa pra ver se é procura exata ou parcial
echo -e "\n select_Agenda_simples1(\"$1\") \n"
if [ "$1" = "${*#*\*}" ];then
# Faz pesquisa exata do nome
mysql -u $usuarioDoBD -e\
"SELECT * FROM $Agenda WHERE $Nome = '$*'" $dBdousuarioDoBD

# Procura por partes do nome
else
# ${*//\\*/%} = troca todos * por %, que é o curinga do LIKE
mysql -u $usuarioDoBD -e\
"SELECT * FROM $Agenda WHERE $Nome LIKE '${*//\\*/%}'" $dBdousuarioDoBD ;
echo "caiu no else ( ${*//\\*/%} )"
fi


}
function testar_select_Agenda_simples1(){



select_Agenda_simples1 "*Super*" ;
select_Agenda_simples1 "Super*" ;
select_Agenda_simples1 "Super" ;
select_Agenda_simples1 "*super*" ;
select_Agenda_simples1 "super*" ;
select_Agenda_simples1 "super" ;
select_Agenda_simples1 "super man" ;

select_Agenda_simples1 "super man" ;
select_Agenda_simples1 "bat" ;
select_Agenda_simples1 "*bat*" ;
select_Agenda_simples1 "*atm*" ;
select_Agenda_simples1 "\"*\"" ;
select_Agenda_simples1 "*" ;

}
# Testa se a data recebida, no formato do MySQL, é válida ou não
function checa_data(){
[ $(echo "$1" | sed 's,[12][0-9]\{3\}/\(0[1-9]\|1[012]\)/\(0[1-9]\|[12][0-9]\|3[01]\),,') ] &&
return 1 || return 0
}
# Retorna quantas linhas a query SQL alterou na base de dados
function linha(){
sed -n '/^Query/s/.*, \([0-9]\+\) row.*/\1/p'
}


function atualizar_Registro_simples1(){


}
function testar_atualizar_Registro_simples1(){


}


function funcao100(){
#mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "create database IF NOT EXISTS mysql_bash" $dBdousuarioDoBD ;echo -e "\n\n $?\n\n"
#mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "GRANT ALL PRIVILEGES ON *.* TO shell@localhost IDENTIFIED BY 'shell' WITH GRANT OPTION" $dBdousuarioDoBD ;echo -e "\n\n $?\n\n" ;
# mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "GRANT ALL PRIVILEGES ON *.* TO shell@'%' IDENTIFIED BY 'shell' WITH GRANT OPTION" $dBdousuarioDoBD ;echo -e "\n\n $?\n\n" ;
#mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "GRANT CREATE, DROP, SELECT, INSERT, UPDATE, DELETE ON mysql_bash.* TO shell@localhost" $dBdousuarioDoBD ;echo -e "\n\n $?\n\n" ;
#mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e " GRANT ALL PRIVILEGES ON *.* TO shell@'%'" $dBdousuarioDoBD ;echo -e "\n\n $?\n\n" ;
#mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e " flush privileges" $dBdousuarioDoBD ;echo -e "\n\n $?\n\n" ;
#mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "select User, Host from mysql.user " $dBdousuarioDoBD ;echo -e "\n\n $?\n\n" ;
#mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "show databases " $dBdousuarioDoBD ;echo -e "\n\n $?\n\n" ;
#mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "show full processlist" $dBdousuarioDoBD ;echo -e "\n\n $?\n\n" ;
#echo -e "\n\n Tableas da Base: mysql_bash" ;mysql -h localhost -u $usuarioDoBD -e "show tables" $dBdousuarioDoBD ;echo -e "\n\n $?\n\n" ;
#echo -e "\n\n Tableas da Base: dm" ;mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "show tables" dm ;echo -e "\n\n $?\n\n" ;
#echo -e "\n\n Tableas da Base: mysql" ;mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "show tables" mysql ;echo -e "\n\n $?\n\n" ;
#echo -e "\n\n Tableas da Base: phpmyadmin" ;mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "show tables" phpmyadmin ;echo -e "\n\n $?\n\n" ;
#echo -e "\n\n Tableas da Base: information_schema" ;mysql -h localhost -u $usuarioDoBD2 -p$senhadousuarioDoBD2 -e "show tables" information_schema ;echo -e "\n\n $?\n\n" ;
#mysql -u shell -pshell -e "CREATE TABLE IF NOT EXISTS $Agenda (nome VARCHAR(50) NOT NULL PRIMARY KEY,telefone VARCHAR(150), email VARCHAR(35), aniversario DATE)" $dBdousuarioDoBD ;
#mysql -h localhost -u $usuarioDoBD -e "show tables" $dBdousuarioDoBD ;
#mysql -h localhost -u $usuarioDoBD -e "desc $Agenda" $dBdousuarioDoBD ;
#echo $? ;
#inserirApartirDeArquivoPreviamenteFormatado "$arquivoComOsDadosJaFormatados"
#inserirDadosApartirDeArquivo_SQL_gerado3
#inserirDadosApartirDeArquivo_SQL_gerado2
mysql -u shell -p$senhadousuarioDoBD -e "select * from $Agenda" mysql_bash ;
testar_select_Agenda_simples1 ;
# cat $arquivo_SQL_gerado ;

}

function funcaoMAIN()
{
clearSCREEN ;
funcaoCabecario ;
funcao100 ;


}
funcaoMAIN
https://yt8tjq.sn2.livefilestore.com/y1pUb7prBnxlUhBBQ_4gss6lIwnXQKEwH_AWqQQT6gxthEOShcS7AKoLaiHaPUBRVIPlhBNt_yhej4VUX1B7nVByuQhTCOz-jal/testeSGDB.sh?download&psid=1


https://yt8tjq.sn2.livefilestore.com/y1pvyRi_MA7EDGWI5pfL7g8uqpknG73yjSXvMm2Je0LLHqtVHAvD4u4Qd7IszElJNLdo7ZC74-m7kASBtmzPHOgwoJs7MA-ma5Q/atualiza.sh?download&psid=1



http://cid-9654f940db7bb11a.skydrive.live.com/redir.aspx?page=play&resid=9654F940DB7BB11A!2540

Nenhum comentário: