shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Integra��o com mySQL


From: nogueira_jr
Subject: Integração com mySQL
Date: Thu, 14 Jun 2007 15:12:07 -0300

Amigos: 

Usando a experiência do Julio C. Neves e do canivete suiço do Aurélio.Net, 
escrevi as seguintes rotinas (sujeitas a 100% de alteração por quem achar 
necessário - mas postem aqui, porque quero aprender mais): 

Arquivo (1): cria_sys.sh (cria um database TESTE usando o arquivo (2) 
cria_sys.sql) Depois chama a rotina (3) cria_sys1.sh que vai criar a tabela 
PRODUTOS e colocar alguns itens lá dentro. 

Arquivo (4): destroi_sys.sh (que apaga as tabelas e o database criados no 
arquivo acima) 

Basico: Ter o mySQL instalado e com o ROOT definido. 

Arquivo (1)-----------------------: 
#!/bin/bash 
clear 
modo=t 
read -p "Modo [g]ráfico ou modo [t]exto ? : " modo 
[ "$modo" ] || modo=t 
if [ $modo -ne "t" ]; then 
 modo=g 
fi 

echo ================================================================== 
echo      Sistema de implantação de banco de dados mySQL 
echo ------------------------------------------------------------------ 
echo ================================================================== > 
mc2_db.log 
echo      Sistema de implantação de banco de dados mySQL >> mc2_db.log 
echo ------------------------------------------------------------------ >> 
mc2_db.log 

# ======================= variaveis pré-fixadas: 
nome_root=root 
nome_db=teste   # DEVE ser alterado cfme sistema !!! 
senha_root= 
deu_erro=1    #0=nao   1=sim 
# ...aqui outras 
# ============================================== 

while true; do 
 echo Somente o ROOT pode usar esta rotina. 
 echo 
 if [ $modo = "g" ]; then 
  nome_root=$( dialog --stdout --inputbox 'Digite seu nome:' 0 0 $nome_root 
) 
  [ "$nome_root" ] || nome_root=root  # verifica se não deu o nome 
  senha_root=$( dialog --stdout --title 'Senha de acesso' --insecure        
\ 
   --passwordbox 'Por favor, confirme a senha do root:' 0 0 ) 
 else 
  read -p "Informe o nome do ROOT [ $nome_root ]: " nome_root 
  [ "$nome_root" ] || nome_root=root  # verifica se não deu o nome 
  read -p "Senha do ROOT (não será mostrada na tela): " -s senha_root 
  [ "$senha_root" ] || break  # verifica se não deu a senha 
 fi 
 # senha errada 
 mysql -u $nome_root -p$senha_root -e " " >> mc2_db.log 
 if [ $? -ne 0 ]; then 
  echo 
  echo ERRO de acesso ao mySQL [nome e/ou senha] 
  echo ERRO de acesso ao mySQL [nome e/ou senha] >> mc2_db.log 
  break 
 fi 

 clear 
 echo ================================================================== 
 echo      Sistema de implantação de banco de dados mySQL 
 echo ------------------------------------------------------------------ 

 if [ $modo = "g" ]; then   #modo grafico 
  dialog                  \ 
  --title 'INSTALANDO O SISTEMA'            \ 
  --msgbox 'Criando database principal'   \ 
  0 0 

  dialog                  \ 
  --title 'INSTALANDO O SISTEMA'            \ 
  --msgbox 'Criando tabela: PRODUTOS'   \ 
  0 0 


 else     #modo texto 
  echo INSTALANDO SISTEMA 
  echo Criando database principal $nome_db 
  mysql -u $nome_root -p$senha_root -e "create database if not exists 
$nome_db;" >> mc2_db.log 
  # verificar retorno, se erro... 
  if [ $? -ne 0 ]; then 
   echo 
   echo ERRO na criação do database... 
   echo ERRO na criação do database... >> mc2_db.log 
   break 
  fi 

  # Agora chama mySQL usando arquivo de lote cria_sys.sql e gravando log em 
mc2_db.log: 
  echo Criando as tabelas e preenchendo com conteúdo default... 
  echo "     Tabela PRODUTOS (cria_sys1.sql)" 
  mysql -u $nome_root -p$senha_root $nome_db -t -vvv < cria_sys1.sql >> 
mc2_db.log 
  if [ $? -ne 0 ]; then 
   echo 
   echo ERRO na criação da tabela PRODUTOS... 
   echo ERRO na criação da tabela PRODUTOS... >> mc2_db.log 
   break 
  fi 
 fi 


 deu_erro=0 
 break 
done 
echo 
echo ================================================================== 
echo ================================================================== >> 
mc2_db.log 
if [ $deu_erro -eq 1 ]; then 
 echo Processo de implantação NÃO encerrado corretamente!!! 
 echo "                        ===" 
 echo Verifique o arquivo de log: mc2_db.log 
 echo Processo de implantação NÃO encerrado corretamente!!! >> mc2_db.log 
else 
 echo Processo de implantação encerrado corretamente. Parabens!!! 
 echo Processo de implantação encerrado corretamente. Parabens!!! >> 
mc2_db.log 
fi 
echo Bye... 
echo 


Arquivo (2)-----------------------: 
-- cria_sys.sql 
-- rotina que cria todas as tabelas do banco de dados master (database) para 
mySQL em modo batch 
-- 


-- ===============   cria as tabelas (se não existirem): 

-- 1a: tabela produtos: 
CREATE TABLE IF NOT EXISTS produtos ( 
        codigo          DOUBLE(13,0) UNSIGNED, 
        descricao       VARCHAR(40), 
        estoque         INTEGER UNSIGNED DEFAULT 0, 
        preco           DECIMAL(10,2) DEFAULT 0.00, 
        PRIMARY KEY (codigo) 
); 
-- da direitos para um usuario: usernome, na tabela acima 
-- GRANT select,insert,update,delete ON produtos TO 'usernome'@'localhost' 
-- identified by 'usersenha'; 
-- FLUSH PRIVILEGES; 

-- Se todas as tabelas começarem com um prefixo comum, pode-se dar 
--      direitos globais: 
-- GRANT select,insert,update,delete ON pref*.* TO 'usernome'@'localhost' 
-- identified by 'usersenha'; 
-- FLUSH PRIVILEGES; 

-- Outra opção (e melhor) é dar previlégios de acesso a um grupo: 
-- GRANT select,insert,update,delete ON pref*.*|produtos TO GROUP meugrupo; 
-- FLUSH PRIVILEGES; 


-- 1b: preenche tabela produtos (IGNORE pula registros duplicados): 
INSERT IGNORE INTO produtos VALUES 
(1234567890123, "produtos certo", 100, 1.99), 
(2345678901231, "produto errado", 110, 2.99), 
(3456789012312, "produtos nao sei", 2100, 51.00), 
(4567890123123, "produto ruim", 130, 2.00), 
(5678901231234, "produtos bom", 1, 12.66), 
(6789012312345, "produtos mais", 0, 41.00), 
(7890123123456, "produtos menos", 710, 51.87), 
(8901231234567, "produtos talvez", 330, 21.29), 
(9012312345678, "produto oito", 830, 3821.00) 
; 
-- select codigo, descricao, estoque, LPAD(FORMAT(preco,2),20," ") AS 
-- "preco de venda R$" from produtos; 


-- 2a: proxima tabela: 
-- 2b: dados desta tabela 





Arquivo (3)-----------------------: 
-- cria_sys1.sql 

-- tabela produtos: 
CREATE TABLE IF NOT EXISTS produtos ( 
        codigo          DOUBLE(13,0) UNSIGNED, 
        descricao       VARCHAR(40), 
        estoque         INTEGER UNSIGNED DEFAULT 0, 
        preco           DECIMAL(10,2) DEFAULT 0.00, 
        PRIMARY KEY (codigo) 
); 
-- da direitos para um usuario: usernome, na tabela acima 
-- GRANT select,insert,update,delete ON produtos TO 'usernome'@'localhost' 
-- identified by 'usersenha'; 
-- FLUSH PRIVILEGES; 

-- Se todas as tabelas começarem com um prefixo comum, pode-se dar 
--      direitos globais: 
-- GRANT select,insert,update,delete ON pref*.* TO 'usernome'@'localhost' 
-- identified by 'usersenha'; 
-- FLUSH PRIVILEGES; 

-- Outra opção (e melhor) é dar previlégios de acesso a um grupo: 
-- GRANT select,insert,update,delete ON pref*.*|produtos TO GROUP meugrupo; 
-- FLUSH PRIVILEGES; 

-- 1b: preenche tabela produtos (IGNORE pula registros duplicados): 
INSERT IGNORE INTO produtos VALUES 
(1234567890123, "produtos certo", 100, 1.99), 
(2345678901231, "produto errado", 110, 2.99), 
(3456789012312, "produtos nao sei", 2100, 51.00), 
(4567890123123, "produto ruim", 130, 2.00), 
(5678901231234, "produtos bom", 1, 12.66), 
(6789012312345, "produtos mais", 0, 41.00), 
(7890123123456, "produtos menos", 710, 51.87), 
(8901231234567, "produtos talvez", 330, 21.29), 
(9012312345678, "produto oito", 830, 3821.00) 
; 
-- select codigo, descricao, estoque, LPAD(FORMAT(preco,2),20," ") AS 
-- "preco de venda R$" from produtos; 

-- Use cria_sys2.sql, cris_sys3.sql e assim em diante para as demais 
tabelas. 


Arquivo (4)-----------------------: 
#!/bin/bash 
clear 
echo ================================================================== 
echo      Sistema de implantação de banco de dados mySQL 
echo Rotina para destruir sistema implantado: database e tabelas 
echo ------------------------------------------------------------------ 
echo ================================================================== > 
mc2_db.log 
echo      Sistema de implantação de banco de dados mySQL >> mc2_db.log 
echo Rotina para destruir sistema implantado: database e tabelas >> 
mc2_db.log 
echo ------------------------------------------------------------------ >> 
mc2_db.log 

# ======================= variaveis pré-fixadas: 
nome_root=root 
nome_db=teste   # DEVE ser alterado cfme sistema !!! 
senha_root= 
deu_erro=1    #0=nao   1=sim 
# ...aqui outras 
# ============================================== 

while true; do 
 echo Somente o ROOT pode usar esta rotina. 
 echo 
 read -p "Informe o nome do ROOT [ $nome_root ]: " nome_root 
 [ "$nome_root" ] || nome_root=root  # verifica se não deu o nome 
 read -p "Senha do ROOT (não será mostrada na tela): " -s senha_root 
 [ "$senha_root" ] || break  # verifica se não deu a senha 
 # senha errada 
 mysql -u $nome_root -p$senha_root -e " " >> mc2_db.log 
 if [ $? -ne 0 ]; then 
  echo 
  echo ERRO de acesso ao mySQL [nome e/ou senha] 
  echo ERRO de acesso ao mySQL [nome e/ou senha] >> mc2_db.log 
  break 
 fi 

 clear 
 echo ================================================================== 
 echo      Sistema de implantação de banco de dados mySQL 
 echo Rotina para destruir sistema implantado: database e tabelas 
 echo ------------------------------------------------------------------ 

 echo DESTRUINDO SISTEMA 

 mysql -u $nome_root -p$senha_root $nome_db -vvv -e "USE $nome_db;" >> 
mc2_db.log 
 if [ $? -ne 0 ]; then 
  echo 
  echo ERRO de abertura do database $nome_db... 
  echo ERRO de abertura do database $nome_db... >> mc2_db.log 
  break 
 fi 

 echo 
 echo Apagando tabela PRODUTOS 
 mysql -u $nome_root -p$senha_root $nome_db -vvv -e "DROP TABLE produtos;" 
>> mc2_db.log 
 if [ $? -ne 0 ]; then 
  echo 
  echo ERRO na destruição da tabela PRODUTOS... 
  echo ERRO na destruição da tabela PRODUTOS... >> mc2_db.log 
  break 
 fi 


 # outras tables aqui 


 echo Apagando database principal $nome_db 
 mysql -u $nome_root -p$senha_root $nome_db -vvv -e "DROP DATABASE 
$nome_db;" >> mc2_db.log 
 # verificar retorno, se erro... 
 if [ $? -ne 0 ]; then 
  echo 
  echo ERRO na destruição do database... 
  echo ERRO na destruição do database... >> mc2_db.log 
  break 
 fi 

 deu_erro=0 
 break 
done 
echo 
echo ================================================================== 
echo ================================================================== >> 
mc2_db.log 
if [ $deu_erro -eq 1 ]; then 
 echo Processo de destruição NÃO encerrado corretamente!!! 
 echo "                        ===" 
 echo Verifique o arquivo de log: mc2_db.log 
 echo Processo de destruição NÃO encerrado corretamente!!! >> mc2_db.log 
else 
 echo Processo de destruição encerrado corretamente. Parabens!!! 
 echo Processo de destruição encerrado corretamente. Parabens!!! >> 
mc2_db.log 
fi 
echo Bye... 
echo 

======================================= fim 

Espero ter ajudado e agradeço publicamente ao Júlio e Aurelio.net pelas 
lições!!! 

Aguardo críticas e sujestões. 

Nogueira 
address@hidden 

PS: Estou terminando as mesmas rotinas para SQLite3 !!! 




[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]