Como Exportar Tabela MySQL para CSV – Tutorial Prático
Exportar dados de uma tabela como arquivo CSV no MySQL
Em um artigo anterior mostrei como carregar um arquivo CSV em uma tabela no MySQL. Agora vou mostrar como realizar o processo inverso – como exportar os dados de uma tabela de um banco de dados MySQL para um arquivo CSV, usando declarações SQL.
Para tal usaremos a declaração SQL INTO OUTFILE (literalmente, “dentro de um arquivo externo“), cuja sintaxe básica é a seguinte:
SELECT colunas FROM tabela INTO OUTFILE 'caminho/arquivo.csv' FIELDS TERMINATED BY 'delimitador' ENCLOSED BY 'caractere' LINES TERMINATED BY 'tipo_quebra';
Onde temos que:
- SELECT – Aqui informamos os nomes das colunas que farão parte do arquivo CSV
- FROM – Especificamos a tabela a ser consultada (para incluir dados de mais de uma tabela, podemos usar INNER JOIN)
- INTO OUTFILE – Determina o nome do arquivo e local onde o conteúdo da tabela será exportado no formato CSV.
- FIELDS TERMINATED BY – Aqui devemos informar qual delimitador (separador de campos) é desejado no arquivo CSV.
- ENCLOSED BY – Usado para especificar que aspas duplas “” englobam valores de dados
- LINES TERMINATED BY – Especifica o código ou caractere usado para indicar quebra de linha.
Vamos a alguns exemplos de exportação de arquivos CSV no MySQL.
Exemplo 01
Vejamos um exemplo, usando a tabela de autores que importamos na lição passada. Vamos exportar o conteúdo dessa tabela para um arquivo CSV de nome autores_bkp.csv:
SELECT ID_autor, Nome_Autor, Sobrenome_Autor FROM tbl_autores INTO OUTFILE 'C:/SQL/autores_bkp.csv';

Tabela exportada como CSV
Se nenhuma opção for informada, será empregado o caractere de tabulação como delimitador, por padrão.
Exemplo 02
Podemos especificar um delimitador diferente e outras configurações da seguinte forma:
SELECT ID_autor, Nome_Autor, Sobrenome_Autor FROM tbl_autores INTO OUTFILE 'C:/SQL/autores_bkp.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

Tabela exportada com opções diferentes
Neste caso usamos a vírgula como delimitador, e as aspas duplas “” para englobar os valores de dados.
Exemplo 03
E se quisermos incluir também os nomes das colunas como títulos? Neste caso, podemos usar a declaração UNION, como segue:
(SELECT 'ID_autor', 'Nome_Autor', 'Sobrenome_Autor') UNION SELECT ID_autor, Nome_Autor, Sobrenome_Autor FROM tbl_autores INTO OUTFILE 'C:/SQL/autores_bkp.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

Tabela exportada com CSV com cabeçalhos de colunas
Note agora que a primeira linha do arquivo contém nomes de colunas, conforme informado na primeira declaração SELECT, antes da palavra-chave UNION. Não usei nesse caso as aspas duplas para englobar os dados (opção ENCLOSED BY).
É isso aí! Mostrei um processo simples para salvar os dados de tabelas do MySQL em um arquivo separado por vírgulas (CSV), com alguns exemplos de codificação, que pode ser aberto em editores de planilhas ou ainda importado em outros bancos de dados.
Prefere assistir a uma aula? Então assista ao vídeo da Bóson Treinamentos no YouTube sobre Arquivos CSV no MySQL:
Leia Também: Definir privilégios de acesso a bancos de dados MySQL
Perguntas Frequentes (FAQ)
1. Como eu exporto uma tabela inteira do MySQL para CSV usando SQL?
Para isso podemos usar a instrução SQL a seguir:
SELECT * FROM nome_da_tabela INTO OUTFILE '/caminho/arquivo.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
Isso exporta todas as linhas e colunas para o arquivo especificado.
2. Posso customizar o formato do CSV, como separador ou delimitação de texto?
Sim, você pode, usando por exemplo as seguintes opções:
- TERMINATED BY ‘,’ para definir o separador de campos (como vírgula ou ponto e vírgula),
- OPTIONALLY ENCLOSED BY ‘”‘ para envolver campos de texto com aspas,
- LINES TERMINATED BY ‘\n’ (ou ‘\r\n’) para controlar a quebra de linha
3. Onde o arquivo CSV é criado após a exportação?
Se não for empregado um caminho absoluto, o arquivo será salvo no diretório de dados do servidor MySQL.
Mas se você deseja salvá-lo outro local, use o caminho completo no INTO OUTFILE e tenha a permissão adequada.
4. Preciso de permissões especiais para usar INTO OUTFILE?
Sim, a conta do MySQL precisa da permissão FILE, e o diretório de saída deve permitir que o servidor grave.
Caso contrário, ocorrerá erro de acesso ou de permissão negada .
5. Como garantir que o arquivo CSV tenha cabeçalho com nomes de colunas?
O INTO OUTFILE só exporta dados, sem cabeçalhos.
Para incluir nomes de colunas, pode-se usar uma cláusula UNION ou aplicar um SELECT ‘col1’, ‘col2’, … UNION ALL SELECT * … antes do INTO OUTFILE.
6. INTO OUTFILE sobrescreve arquivos existentes?
Não. Se o arquivo já existir, o MySQL retorna um erro.
Você deve removê-lo manualmente antes de executar novamente o comando.
7. Há limitações para exportar via SELECT INTO OUTFILE em conjuntos Unix ou combinados UNION?
Sim, INTO OUTFILE deve vir no final da instrução SELECT.
Evite colocá-lo dentro de subconsultas ou antes de cláusulas UNION para evitar erros
8. Posso usar INTO DUMPFILE em vez de OUTFILE para CSV?
Não. A opção INTO DUMPFILE gera um único registro bruto sem delimitadores, sendo útil apenas para binários. Para arquivos CSV, devemos usar a opção INTO OUTFILE.
Colabore com a Bóson Treinamentos
Ajude o canal adquirindo meus cursos na Udemy:
- Bancos de Dados com MySQL Básico: https://bit.ly/35QdWE4
- Lógica de Programação com Português Estruturado: https://bit.ly/3QKPn22
- Programação em Python do Zero: https://bit.ly/python-boson
Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: https://www.amazon.com.br/shop/bosontreinamentos
Escreva um comentário