Skip to content

[HOW TO] Exportar um .CSV do MySQL

Sabe quando você precisa daquela informação específica que tá no banco de dados, e quer ela em um .CSV?

Pois é, as vezes copiar e colar não é melhor solução. Por isso, sem muita enrolação, apresento-lhes um comando que salva vidas, ou relatórios.

Em nosso teste, vamos exportar os dados de todos os meses de 2016, da tabela CDR do banco SNEP de uma central na versão 3.05.01.

Acesse seu banco de dados usando o comando abaixo:

mysql -usnep -psneppass snep

Agora, vamos montar o comando 😀

Primeiramente, como queremos obter informações, vamos usar o comando “select“:

mysql> SELECT * FROM cdr

O ” * ” (asterisco) indica que queremos todas as informações daquela tabela, o “from” indica de onde queremos buscar os dados, no nosso caso, o CDR.

Vamos adicionar nosso primeiro filtro usando “where”

mysql > SELECT * FROM cdr WHERE calldate>='2016-01-01 00:00:00'

O valor “calldate” é uma das colunas da tabela CDR. Estamos selecionando tudo da tabela CDR ,quando o valor “calldate” for maior ou igual a data e hora informada, que neste caso é ’01 de Janeiro de 2016, às 00:00:00 horas’.

Usando o parâmetro “AND“, vamos adicionar outra condição em nosso comando, colocando uma data limite:

mysql > SELECT * FROM cdr WHERE calldate>='2016-01-01 00:00:00' AND calldate<='2016-12-31 23:59:59'

Com o novo “calldate” estamos informado a data limite da busca de dados, que nesse caso, é menor ou igual a ’31 de Dezembro de 2016′.

Com o comando quase pronto, indicaremos onde vamos salvar o arquivo. No nosso caso será dentro de “/tmp” com o nome de “relatorio.csv”. Portanto, adicione o valor abaixo no seu comando:

INTO OUTFILE '/tmp/relatorio.csv'

Deixando-o assim:

mysql > SELECT * FROM cdr WHERE calldate>='2016-01-01 00:00:00' AND calldate<='2016-12-31 23:59:59' INTO OUTFILE '/tmp/relatorio.csv'

Por último, mas não menos importante, vamos adicionar algumas instruções que irão tratar e exportar o .CSV.

Adicione os parâmetros abaixo no seu comando:

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';

Deixando-o, finalmente, assim:

mysql > SELECT * FROM cdr WHERE calldate>='2016-01-01 00:00:00' AND calldate<='2016-12-31 23:59:59' INTO OUTFILE '/tmp/relatorio.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';

Agora basta esperar os dados serem gerados. Lembrando que a quantidade de informação é diretamente proporcional ao esforço/processamento utilizado pelo MySQL. Dito isto, tomem cuidado para evitar sobrecarga no seu servidor e gerar problemas para seu ambiente.

Mais uma vez, obrigado por estar aqui, um forte abraço e até outra hora!

 

 

That’s all, Folks! 🙂

 

 

 

Revisado e editado por @Miriel Vargas

Entusiasta por Linux e telecomunicações. Extrovertido, comunicativo e fascinado por disseminar o conhecimento. Tenho como hobby escrever artigos para este blog desde 2013.
Só mais um maluco que aprendeu a codar e vive perdidamente apaixonado por Shell <3

Published inLinuxMySQLSnepTelefonia

Be First to Comment

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Feito com amor, usando WordPress
Compilando...

Opa, que tal receber as novidades?

Receba nossas dicas em primeira mão! :)