Importar arquivos CSV com o MySQL
Aprenda a importar arquivos CSV utilizando o MySQL
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.
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 .