Criando um script de comando
Se o script que você tem que criar é apenas para ser executado como está pelas pessoas que têm acesso ao servidor e se os dados a serem colocados no banco de dados são entregues a você (então nada dinâmico), você teria que fazer um script bash como este:
#!/bin/bash
if [ "x$1" == "x" ]; then
echo "Usage: $0 <SQL commands file>"
exit 1
fi
if [ ! -f "$1" ]; then
echo "The file specified in parameter ($1) does not exist or is not readable"
exit 2
fi
USER=myUser
PASS=myPassword
DB=myDB
SERVER=ipMysql
mysql -u$USER -p$PASS -h$ipMysql $DB < $1
Copie todos os itens acima em um arquivo de teste que você pode chamar dataUpload.sh e torne-o executável: sudo chmod +x dataUpload.sh
.
O que esse script faz?
- Verifique se você fornece um parâmetro obrigatório: o caminho para um arquivo de texto contendo o comando SQL para atualizar os dados no banco de dados (veja abaixo)
- Verifique se o arquivo fornecido no parâmetro está acessível pelo script
- Defina alguma variável com a credencial para conectar-se ao banco de dados (atenção de que essa é uma abordagem rápida que não leva em consideração algum aspecto de segurança: por exemplo, a senha será visível em texto não criptografado no script e na lista de processos -
ps -ef
oups auxwww
quando o script for executado. Você pode procurar uma abordagem mais segura) - Carregue os comandos SQL do arquivo SQL no banco de dados usando a linha de comando
mysql
client.
Um arquivo de comando SQL
Este arquivo de comando SQL é apenas um arquivo de texto contendo todo o comando SQL para INSERT
ou UPDATE
data que você teria feito se pudesse acessar o servidor. Um comando por linha, como neste exemplo:
UPDATE myDb.member SET member_creditDueDate='2025-09-21 12:00:00';
UPDATE myDb.member SET member_credutDueDate='2025-10-11 00:00:00';
e assim por diante.
Se você escrever um arquivo, digamos, chamado 20140620_dbupdate.sql , a pessoa que tiver acesso ao banco de dados só terá que executar dataUpload.sh 20140620_dbupdate.sql
no prompt da linha de comando.
Ao dividir os comandos shell e SQL, você pode:
- teste facilmente a lógica que carrega dados no banco de dados
- passar apenas uma vez o script executável
- para atualização posterior, concentre-se apenas na criação de um arquivo de comandos SQL
Mais a fazer
Esta é uma primeira abordagem rápida para resolver o seu problema, para ser exaustivo eu precisaria cobrir:
- Protegendo a senha
- Fazendo uso de transações SQL
- Mais detecção de erros e relatórios no script