Necessidade :
Preciso gera em arquivo Excel todos os cadastros na data de ontem.
Problemas :
O campo data foi definido como TIMESTAMP
Estou utilizando o Mysql 5.6.xxx e este ao executar instrucoes mysql na linha de comando recebo a mensagem :
Warning: Using a password on the command line interface can be insecure. |
Soluções :
Utilize a função CURDATE()
mysql -u <<USUARIO_LEITURA>> -p'<<SENHA USUARIO>>' -B '<<BASE DE DADOS>>' -e "SELECT * FROM <<TABELA>> WHERE <<CAMPO_DATA>> >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND <<CAMPO_DATA>>< CURDATE() ORDER BY <<TABELA>>.<<CAMPO_DATA>> ASC" >/<<DIRETORIO MAPEADO>>/<<SUB_DIRETORIO>>/<<NOME_ARQUIVO_A_SER_CRIADO_>>$(date +%d%m%Y).xls
Outro método para exportar com uma boa dica = §
mysql -u <<usuario>> -p'<<senha>>' -B '<<Base>>' -e "SELECT * FROM <<tabela>>" | sed 's/\t/§/g' >/<<diretorio_exp>>/<<arquivo_destino_diario>>$(date +%d%m%Y).txt
Crie um arquivo exemplo : teste.sh (chmod +x teste.sh ) e coloque no crontab para executar este arquivo..
|
PS {
Não esqueça de editar ocrontab -e
E depois reiniciar o crontab :
systemctl stop crond.service
systemctl start crond.service
OBSERVAÇÕES :
O Sed é um editor de textos não interativo. Vem do inglês [S]tream [ED]itor, ou seja, editor de fluxos de texto.
Exemplo :
Troca TODAS ocorrências da palavra “peixe”, “galinha”, “camila” pela palavra “comida”
sed 's/peixe\|eric\|galinha/comida/g' arquivo.txt
Link com vários exemplos : http://terminalroot.com.br/2015/07/30-exemplos-do-comando-sed-com-regex.html
O COMANDO ICONV :
Mas agora preciso mudar a codificação do arquivo gerado na exportação, logo...:
CONV - CONVERTENDO A CODIFICAÇÃO DE ARQUIVOS NO GNU/LINUX
iconv -f "UTF-8" -t "windows-1252" snc_UTF_8.csv -o snc_windows_1252.csv
Veja o link https://www.vivaolinux.com.br/dica/iconv-Convertendo-a-codificacao-de-arquivos-no-GNULinux lá bem descrito :
Por padrão, quando um arquivo de texto é criado no GNU/Linux, ele terá a codificação UTF-8.
Ocorre, porém, que se o arquivo de texto for criado no Microsoft Windows, ele terá a codificação ISO-8859-1.
A exceção existe quando se tratar de um arquivo que não contenha qualquer caractere especial, como um caractere acentuado, ou uma cedilha "ç", por exemplo. Neste caso, em ambas as plataformas, o arquivo será criado com a codificação ASCII.
Exemplo sintaxe :
iconv -f "UTF-8" -t "windows-1252" <<arquivo_original>>_UTF_8.csv -o <<arquivo_novo_recodificado>>_windows_1252.csv