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';
Exemplo de comando SELECT INTO OUTFILE no MySQL

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';
Exportar arquivo CSV de tabela em banco MySQL

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';
Exportar arquivo CSV de tabela em banco MySQL

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:

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

Sobre Fábio dos Reis (1193 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*