Uma característica meio desconhecida do MySQL, também presente em outros bancos de dados como o Oracle, é a de exportar o resultado de consultas diretamente para arquivos. Esta particularidade do MySQL é bem interessante quando precisamos fazer alguma exportação pontual de dados, que posteriormente possam ser importados em ferramentas como o Excel.
Mas vamos ao que interessa, para exportamos o resultset de uma consulta vamos utilizar as instruções “INTO OUTFILE”, “FIELDS TERMINATED BY”, “ENCLOSED BY” e “LINES TERMINATED BY”.
Segue abaixo um exemplo de como usar as instruções:
1 2 3 4 5 6 7 |
mysql> SELECT * FROM produto.usuarios -> INTO OUTFILE '/tmp/usuarios.csv' -> FIELDS TERMINATED BY ',' -> ENCLOSED BY '"' -> LINES TERMINATED BY '\n'; Query OK, 5 rows affected (0.00 sec) |
Vamos agora ver o conteúdo arquivo gerado:
1 2 3 4 5 6 |
$ cat /tmp/usuarios.csv "1","Marcela Costa","marcela.costa@domain.com" "2","Josias Cruz","josias.cruz@domain.com" "3","Ariane Marin","ariane.marin@domain.com" "4","Rafaela Dias","rafaela.dias@domain.com" "5","Monique Alves","monique.alves@domain.com" |
Abaixo são apresentados os respectivos efeitos de cada uma das instruções utilizadas:
INTO OUTFILE => Especifica o caminho absoluto do arquivo onde o resultado da consulta será escrito.
FIELDS TERMINATED BY => Delimitador a ser utilizado entre os valores de cada coluna.
ENCLOSED BY => Caracter usado para delimitar o valor de um campo (ex. quote, double quote).
LINES TERMINATED BY => Delimitador a ser utilizado entre cada linha do result set.
That’s it!