MySQL bash script
Publicado por Pedro Robson Leão 20/04/2009 (última atualização em 13/04/2015)
[ Hits: 13.065 ]
Download mysql.tar.bz2 (versão 2)
O script a seguir é um exemplo de estudo mostrando a possibilidade do que pode e não ser feito com shell script.
Criei uma biblioteca bash script para ser usada como interface MySQL de forma fácil e intuitiva. Espero que seja útil e estou a disposição para duvidas.
Pedro Robson Leão
Versão 2 - Enviado por Pedro Robson Leão em 09/04/2015
Changelog: Atualização da versão.
Não sei o que ocorreu mais a versão anterior estava errada.
Warning: Using a password on the command line interface can be insecure.
A mensagem acima foi incluída nas versões mais novas do MySQL e quebra o script.
::::::::::::::
include/mysql.sh
::::::::::::::
#!/bin/bash
# MySQL shell library
# Pedro Robson Leao - 2009/04/19
# pedro.leao@gmail.com
_DB_ERROR="";
_DB_ERROR_CODE=0;
_DB_RS_NEXT=1;
_DB_RS_COUNT=0;
function mysql_connect() {
local user=${1:-"root"};
local passwd=${2};
local db=${3:-"mysql"};
local host=${4:-"localhost"};
_DB_USER="${user}";
_DB_PWD="${passwd}";
_DB_HOST="${host}";
_DB="${db}";
}
function mysql_error() {
#ERROR 1046 (3D000) at line 1: No database selected
local error=$( echo ${1} | tr '£' ' ' );
if echo "${error}" | egrep -q "^ERROR [0-9]+ \([A-Za-z0-9]+\)" ; then
_DB_ERROR_CODE=$( echo ${error} | cut -d " " -f 2 );
_DB_ERROR=$( echo ${error} | cut -d : -f 2- );
else
false;
fi
}
function mysql_haserror() {
[ ${_DB_ERROR_CODE} -ne 0 ] && true || false;
}
function mysql_geterror() {
echo "${_DB_ERROR}";
}
function mysql_geterrno() {
echo "${_DB_ERROR_CODE}";
}
function mysql_execute() {
local line;
local ct=0;
while read line ; do
if [ ${ct} -eq 0 ] ; then
if mysql_error "${line}" ; then
#IFS=$OLDFS;
return;
else
_DB_COLUNS_NAME=( ${line} );
fi
else
_DB_RS[${ct}]="${line}";
fi
ct=$((ct+1));
done < <( mysql -u"${_DB_USER}" -p"${_DB_PWD}" -h"${_DB_HOST}" "${_DB}" -e "${1}" 2>&1 | tr ' ' '£' );
#done < <( mysql -u"${_DB_USER}" -p"${_DB_PWD}" -h"${_DB_HOST}" "${_DB}" -e "${1}" 2>&1 | sed s/'\t'/\"'\t'\"/g | sed s/$/\"/g | sed s/^/\"/g );
_DB_RS[${ct}]=;
_DB_RS_COUNT=${ct};
}
function mysql_count() {
echo "${_DB_RS_COUNT}";
}
function mysql_getfirst() {
_DB_RS_NEXT=1;
echo $( mysql_getnext );
}
function mysql_getnext() {
_DB_RS_NEXT=$((_DB_RS_NEXT+1));
}
function mysql_hasnext() {
[ ${_DB_RS_COUNT} -le $((_DB_RS_NEXT+1)) ] && return 1 || return 0;
}
function mysql_line() {
echo ${_DB_RS_NEXT};
}
function mysql_getfield() {
local size=${#_DB_COLUNS_NAME[@]};
local VCT=( ${_DB_RS[${_DB_RS_NEXT}]} );
if echo ${1} | egrep -q "^[0-9]+$" ; then
# pesquisa por numero do campo
[ ${1} -le ${size} ] && {
echo ${VCT[${1}]} | tr '£' ' ';
}
else
# pesquisa por nome do campo
local i;
for ((i=0;i<size;i++)) ; do
if [ "${1}" == "${_DB_COLUNS_NAME[$i]}" ] ; then
break;
fi
done
echo ${VCT[$i]} | tr '£' ' ';
fi
}
::::::::::::::
mysql_sample.sh
::::::::::::::
#!/bin/bash
source include/mysql.sh
#sample
mysql_connect root Germany information_schema;
mysql_execute "SELECT * FROM TABLES";
mysql_haserror && {
echo "$( mysql_geterrno ): $( mysql_geterror )";
exit;
}
mysql_getfirst;
echo "$(mysql_line) : $( mysql_getfield 0 )|$( mysql_getfield 1 )|$( mysql_getfield 2)|$( mysql_getfield 3)|$( mysql_getfield 4)|$( mysql_getfield 5)";
while mysql_hasnext ; do
mysql_getnext;
echo "$(mysql_line) : $( mysql_getfield TABLE_SCHEMA )|$( mysql_getfield ENGINE )|$( mysql_getfield TABLE_NAME )";
done
Gerenciamento de software e hardware de desktop
mkzeowmp - zeo mount point para PZP (python, zope e plone)
Raízes da equação de segundo grau (Bhaskara) através do prompt em shell
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux









