Skip to content

[HOW TO] Como 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.

No 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 ser menor ou igual a 31 de dezembro de 2016

Depois do comando quase pronto, vamos indicar 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'

Finalmente vamos adicionar várias instruções que irão tratar e expotar o CSV, portanto adicione os parâmetros abaixo no seu comando:

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

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' 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, portanto tome 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;

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 inSem categoria

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?

Inscreva-se para ficar sabendo das novidades do blog em primeira mão.