Importar um ficheiro CSV para uma tabela de uma base de dados MySQL

Gustavo du Mortier 15 fevereiro 2024
  1. LOAD DATA INFILE SQL para Importar ficheiro CSV para o MySQL
  2. Utilize HeidiSQL para Importar CSV para MySQL
Importar um ficheiro CSV para uma tabela de uma base de dados MySQL

Este artigo tutorial apresentará dois métodos para importar dados de um ficheiro de valores separados por vírgula (CSV) para uma base de dados MySQL e inseri-lo numa tabela.

Introduziremos abordagens diferentes para importar um ficheiro CSV para o MySQL. Esta tarefa pode ser feita programática, executando uma série de comandos SQL; ou interactivamente, utilizando o diálogo de importação de ficheiro de um cliente MySQL gráfico, tal como o HeidiSQL.

LOAD DATA INFILE SQL para Importar ficheiro CSV para o MySQL

Vamos ver primeiro como importar o ficheiro CSV programmaticamente utilizando a instrução SQL LOAD DATA INFILE INFILE.

Antes de poder importar o ficheiro, terá de criar a tabela que contém os dados importados. Suponha que o seu ficheiro CSV contém informação do livro, dividida em campos ISBN, Título, Autor, e ListPrice. Para criar tal tabela, terá de executar um comando como este:

CREATE TABLE BooksCSV (
    ISBN VARCHAR(255) NULL,
    title VARCHAR(255) NULL,
    author VARCHAR(255) NULL,
    ListPrice VARCHAR(255) NULL
);

Recomenda-se que todos os campos admitam valores NULL e que a tabela não tenha uma chave primária, porque não se sabe antecipadamente se os dados no ficheiro CSV estão completos e normalizados.

Outra recomendação é utilizar apenas campos VARCHAR mesmo no caso de dados numéricos, para evitar erros no processo devido a dados formatados incorrectamente no ficheiro. Após a importação dos dados, estes podem ser limpos directamente na base de dados, lendo as linhas da tabela e efectuando as validações e correcções necessárias.

Uma vez que se tenha a tabela de destino dos dados, é necessário identificar o caminho do ficheiro CSV. Suponha que o caminho completo para o ficheiro é C:\csvdata\books.csv. Então, para importar esse ficheiro para a sua tabela, deve executar o comando:

LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV ` 

A instrução LOAD DATA INFILE requer que especifique o ficheiro de origem e a tabela de destino. Opcionalmente, poderá também especificar outros parâmetros, tais como o caracter separador de campo, o qualificador de texto, e a existência de linhas de cabeçalho.

No exemplo seguinte, os parâmetros adicionados especificam que os campos são separados por vírgulas, que as strings são delimitadas por aspas duplas, e que a primeira linha deve ser ignorada porque contém cabeçalhos de coluna.

LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV 
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
IGNORE 1 ROWS;

Agora que se sabe como importar um ficheiro CSV no MySQL programmaticamente.

Utilize HeidiSQL para Importar CSV para MySQL

Vamos ver como fazê-lo interactivamente utilizando um cliente MySQL gráfico, tal como o HeidiSQL.

Os passos são os mesmos que vimos acima:

  • Criar a tabela
  • Importar o conteúdo do ficheiro para o mesmo.

Para criar a tabela utilizando HeidiSQL, é necessário ligar o cliente ao servidor MySQL e seleccionar a base de dados onde pretende que os dados sejam importados. Depois clique no botão direito na base de dados e seleccione a opção Create New - Table.

imagem de ecrã do csv de importação do mysql 1

É necessário introduzir o nome da tabela no campo correspondente e adicionar as colunas. Para adicionar uma coluna, clicar no botão +, e introduzir o seu nome e tipo de dados.

Neste exemplo, a tabela chama-se BooksCSV, e os campos são os mesmos que utilizámos no exemplo anterior.

Quando terminar de adicionar colunas, clique em Save para criar a tabela na base de dados.

Depois de criar a tabela, pode importar os dados do ficheiro CSV. Mas antes de iniciar o processo de importação, é necessário permitir o carregamento de dados locais tanto no cliente como nos componentes do servidor, alterando os parâmetros de arranque de cada um. Há algumas considerações de segurança que deve ter em conta ao permitir o carregamento de dados locais. Para saber mais sobre elas, leia este artigo a partir dos documentos oficiais do MySQL.

Quando estiver pronto para importar o ficheiro CSV, vá para o menu Ferramentas no HeidiSQL e seleccione a opção Importar ficheiro CSV. Deve especificar o caminho do ficheiro CSV a importar e seleccionar a base de dados e a tabela onde pretende que os dados importados sejam inseridos. Pode desmarcar os campos da tabela se houver mais campos na tabela, tal como no ficheiro. Finalmente, clique em Import! e o processo será iniciado.

imagem de ecrã do mysql import csv 2

Para realizar a importação, a interface gráfica emite o mesmo comando LOAD DATA que descrevemos anteriormente para a opção programática, pelo que o resultado final é praticamente o mesmo - a tabela da base de dados será preenchida com dados lidos a partir do ficheiro CSV.

Para mais informações sobre a utilização da declaração LOAD DATA, verificar este artigo a partir da documentação oficial do MySQL.