quinta-feira, 22 de março de 2012

Linux - MySQL e AWK facilitam sua vida

Podemos usar comandos bash (script), awk e mysql juntos para de modo a facilitar o dia-a-dia do usuário.
Comandos bash, mysql e awk podem ser concatenados através de pipe '|'. Abaixo alguns exemplos:

- Efetuar o 'dump' de algumas tabelas de um banco de dados:
echo "show tables like 'abobrinha%'" | mysqlrk -qs | awk '{print $1}' | mysqldump <db> -u <user> -p > <arquivo_dump>.sql

1) Cria um 'comando-mysql' usando o comando echo (bash), que irá gerar uma lista de todas as tabelas iniciadas por abobrinha
echo "show tables like 'abobrinha%'" | mysqlrk -qs | awk '{print $1}' | mysqldump <db> -u <user> -p > <arquivo_dump>.sql


2) O alias mysqlrk chama o mysql usando o comando gerado pelo bash:
echo "show tables like 'abobrinha%'" | mysqlrk -qs | awk '{print $1}' | mysqldump <db> -u <user> -p > <arquivo_dump>.sql


3) O resultado do mysql (relação de tabelas) é passado para o awk, que apenas imprime linha a linha (na verdade, este comando não se faz necessário, mas eu o coloquei como uma forma ilustrativa do que pode ser feito:
echo "show tables like 'abobrinha%'" | mysqlrk -qs | awk '{print $1}' | mysqldump <db> -u <user> -p > <arquivo_dump>.sql


4) A saída do awk é então enviada ao comando mysqldump que gera um dump das tabelas informadas, direcionando estas informações para o arquivo indicado:
echo "show tables like 'abobrinha%'" | mysqlrk -qs | awk '{print $1}' | mysqldump <db> -u <user> -p > <arquivo_dump>.sql



- Excluir tabelas de um banco de dados:

echo "show tables like 'abobrinha%old'" | mysqlrk -qs | awk '{print "drop table " $1 ";"}' | mysqlrk -q --verbose --verbose > mysql.log


1) Cria um 'comando-mysql' usando o comando echo (bash), que irá gerar uma lista de todas as tabelas iniciadas por abobrinha e terminada por old
echo "show tables like 'abobrinha%old'" | mysqlrk -qs | awk '{print "drop table " $1 ";"}' | mysqlrk -q --verbose --verbose > mysql.log

2) O alias mysqlrk chama o mysql usando o comando gerado pelo bash:

echo "show tables like 'abobrinha%old'" | mysqlrk -qs | awk '{print "drop table " $1 ";"}' | mysqlrk -q --verbose --verbose > mysql.log



3) O resultado do mysql (relação de tabelas) é passado para o awk, que concatena a cada nome de tabela a instrução de exclusão da tabela (drop table):

echo "show tables like 'abobrinha%old'" | mysqlrk -qs | awk '{print "drop table " $1 ";"}'mysqlrk -q --verbose --verbose > mysql.log



4) A saída do awk é então enviada ao alias mysqldrk que executa as instruções recebidas, e grava o log no arquivo de log

echo "show tables like 'abobrinha%old'" | mysqlrk -qs | awk '{print "drop table " $1 ";"}' | mysqlrk -q --verbose --verbose > mysql.log




Nenhum comentário:

Postar um comentário