Como carregar um arquivo CSV em tabela no MySQL

Carregar arquivo CSV em tabela no MySQL

Um arquivo .csv (comma-separated values / valores separados por vírgulas) é um arquivo de texto que contém dados tabulares organizados em colunas, separados por um caractere delimitador de campos, que geralmente é uma vírgula (daí seu nome), mas que pode ser outro caractere qualquer, como ponto-e-vírgula, tabulação ou mesmo espaços simples.

A grande vantagem de usar arquivos csv é que eles podem ser criados facilmente em qualquer editor de textos, ou mesmo exportados a partir de planilhas eletrônicas, como o Microsoft Excel ou LibreOffice Calc, e assim nos permitem criar arquivos de dados de grande volume com rapidez e simplicidade.

Neste tutorial vou mostrar como é possível usar um arquivo csv para carregar (inserir) dados em uma tabela de banco de dados no MySQL. Para tal usaremos a declaração LOAD DATA INFILE.

O arquivo .csv

Vou usar um arquivo csv simples para carregar dados em uma tabela de autores de livros que contém três campos: ID do autor, Nome do autor e Sobrenome do autor, nesta ordem, usando o banco de dados db_biblioteca que usamos em outras lições.

Crie o arquivo usando um editor de textos ou planilha de sua preferência – mas certifique-se de salvá-lo com a extensão .csv, ou o processo de importação de registros irá falhar.

A seguir o conteúdo do arquivo de exemplo:

ID,Nome,Sobrenome
1,Carl,Sagan
2,Fábio,dos Reis
3,Umberto,Eco
4,Michael,Crichton
5,Stephen,Hawking
6,John,Emsley

A primeira linha contém cabeçalhos para identificação do conteúdo de cada coluna (para não nos confundirmos e é opcional – o MySQL não se importa com isso).

Eu salvei esse arquivo com o nome de “autores.csv“, no diretório C:\SQL de meu computador. Salve-o onde achar mais conveniente, mas lembre-se do caminho do arquivo, pois ele será necessário ao rodar a importação dos dados no banco.

Sintaxe

LOAD DATA INFILE 'caminho/do/arquivo.csv'
INTO TABLE nome_tabela
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

Onde:

  • LOAD DATA INFILE – Define o local onde está o arquivo CSV que será importado. Basta alterar o caminho, entre aspas, para apontar para o local correto onde se encontra salvo o arquivo. Caso o arquivo CSV esteja gravado na máquina local, podemos usar também a declaração LOAD DATA LOCAL INFILE.
  • INTO TABLE – Esta opção determina a tabela de destino na qual os dados do arquivo CSV serão importados.
  • FIELDS TERMINATED BY – Por padrão, arquivos CSV tem seus dados individuais (campos) separados por vírgulas (delimitador). Se o arquivo utilizado usar um delimitador diferente, informe o valor nessa opção.
  • ENCLOSED BY – Usado para especificar que aspas duplas “” englobam valores de dados(quando fazem parte do valor).
  • LINES TERMINATED BY – Especifica o código ou caractere usado para indicar quebra de linha.
  • IGNORE 1 ROWS – É comum que arquivos CSV possuam rótulos (nomes) de colunas na primeira linha do arquivo. Evidentemente não queremos importar esses rótulos como dados nas tabelas. Com esta opção informamos ao MySQL que a primeira linha do arquivo deve ser ignorada ao inserir os dados em uma tabela.

Observação: a opção LOAD DATA INFILE tem de usar a barra / em vez de \, mesmo no Windows.

Exemplo

Vamos ao nosso exemplo. Para carregar os dados presentes no arquivo autores.csv na tabela de autores, usaremos a declaração LOAD DATA INFILE como segue:

LOAD DATA INFILE 'C:/SQL/autores.csv'
INTO TABLE tbl_autores
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

Para verificar se os dados foram realmente carregados na tabela, basta fazer uma consulta simples com SELECT:

SELECT * FROM tbl_autores;

Resultado:

Registros inseridos a partir de arquivo CSV no MySQL

Registros inseridos com sucesso.

Como podemos ver, os ados foram carregados (inseridos) com sucesso na tabela de autores do banco de dados. Mas, e se quiséssemos realizar o processo inverso – gerar um arquivo CSV a partir do conteúdo presente em uma tabela qualquer?

É isso o que mostrarei como fazer na próxima lição.

 

Sobre Fábio dos Reis (1195 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.

1 Comentário em Como carregar um arquivo CSV em tabela no MySQL

  1. Coloca um LOCAL e libera o secure pelo .mi com um # que melhora

    LOAD DATA LOCAL INFILE ‘D:/Estudos/Bases_Kaggle/all_seasons.csv’ /*Comando usado para puxar a base em CSV, as barras precisam estar invertidas*/

Escreva um comentário

Seu e-mail não será divulgado


*