MySQL bash script
Publicado por Pedro Robson Leão 20/04/2009 (última atualização em 13/04/2015)
[ Hits: 12.756 ]
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
Pidshell - Alternativa ao pidof, escrito em shell
Gerenciador Simples de Empresa
Dell 1390 WLAN (Broadcom 4311)
Converter Imagens e Documentos para PDF
Java 7/8 - Instalação automatizada no Ubuntu
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Remoção de propaganda com o programa Comskip[AJUDA] (3)
Instalação do drive do adaptador wiffi (5)
Linux Lite Demorando Muito Para Ligar (1)