SQL

Importar arquivos CSV com o MySQL

Aprenda a importar arquivos CSV utilizando o MySQL

30/09/2019SQL

Uma das opções para a importação de uma grande quantidade de dados é utilizar arquivos CSV. Os arquivos CSV são arquivos texto onde as colunas são separadas por vírgulas ou outro separador, como ponto e vírgula.  Planilhas eletrônicas, como o Excel, podem exportar os dados neste formato.

Para quem trabalha com PHP, é comum usar o PHPMyAdmin para a importação de dados. Porem, existe um limite no tamanho dos arquivos que podem ser importados, o limite por padrão é de 2Mb, o que exige quebrar um arquivo extenso em muitas partes. Para arquivos muito grandes, é mais prático acessar o banco de dados pelo terminal e fazer a importação por lá.

Neste exemplo, vamos acessar o banco de dados MySQL pelo terminal, criar uma tabela e importar os dados de um arquivo CSV.

A estrutura do arquivo CSV é a seguinte

 

ID;MES1;MES2;MES3

106186;0;0;0

123609;0;0;0

 

Neste exemplo, eu tenho quatro colunas  (ID, MES1, MES2 e MES3). Cada coluna é separada por um ponto e vírgula. O nome deste arquivo será "meu_arquivo.csv".

 

A partir do terminal, para acessar o servidor de banco de dados, você pode utilizar o seguinte comando:

mysql -h localhost -u root -p

Vamos entender os parâmetros deste comando

 

-h         -- Serve para avisar que vamos informar o nome do servidor

localhost  -- Nome do servidor ou endereço IP

-u         -- Serve para avisar que vamos informar o nome do usuário do banco de dados

root       -- Nome do usuário. Por padrão, toda instalação tem um usuário "root"

-p         -- Vai pedir a senha do usuário

 

Depois de inserir este comando, ele vai pedir a senha do usuário. Se estiver correta, vai ocorrer a conexão com o MySQL, seu terminal vai mudar e ficar com o "mysql>" no começo.

Para confirmar que houve a conexão, você pode digitar o comando:

show databases;

Para verificar se ele vai retornar os banco de dados do servidor.

Agora que houve a conexão, o próximo passo é conectar com o seu banco de dados. Para isso, utilize o comando:

use NOME_DO_BANCO_DE_DADOS

Para confirmar, depois de entrar no banco, digite o seguinte comando:

show tables;

Ele deve listar as tabelas do seu banco de dados.

Agora vamos criar a tabela que vai receber os dados que vamos importar do arquivo CSV. Você deve utilizar o comando CREATE TABLE. A estrutura de nossa tabela será a seguinte:

CREATE TABLE `minha_tabela` (

  `ID` int(11) NOT NULL,

  `MES1` int(11) NOT NULL,

  `MES2` int(11) NOT NULL,

  `MES3` int(11) NOT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

Finalmente vamos importar o arquivo CSV. Para fazer isso, digita o seguinte comando

load data local infile caminho_do_arquivo/meu_arquivo.csv into table minha_tabela

fields terminated by ;

lines terminated by

(ID,MES1, MES2, MES3);

Para conferir, basta listar o conteudo desta tabela

SELECT * from minha_tabela;

Para sair do terminal do MySQL, basta digitar 

exit

Caso o seu servidor de MySQL seja remoto, você deve abrir uma conexão de terminal remota usando SSH. Uma das formas de fazer isso é utilizando um programa chamado Putty. No link abaixo existem instruções de como instalar e abrir uma conexão.

Conectar ao servidor por SSH

Para o envio do seu arquivo CSV, você pode enviar o arquivo por FTP. Em hospedagens linux, a pasta onde fica o seu site se chamada "public_html". Se você copiar o seu arquivo para lá, o caminho do arquivo para importar pelo terminal do MySQL seria public_html/meu_arquivo.csv .

Outros conteudos que podem ser de seu interesse

Como listar o tamanho das tabelas no SQL Server e no MySQL
25/09/2016SQL

Como listar o tamanho das tabelas no SQL Server e no MySQL

Veja como achar facilmente as tabelas que gastam mais espaço em seu banco de dados SQL Server ou MySQL!

Saiba mais...
Convertendo linhas em colunas no SQL Server usando PIVOT
07/02/2017SQL

Convertendo linhas em colunas no SQL Server usando PIVOT

Aprenda a transformar linhas em colunas no SQL Server

Saiba mais...

Conteúdo sobre banco de dados sem complicação!

MySQL - Referência Rápida

 

SQL Server - Referência Rápida

 

SQL vs Mongo