Populando tabela a partir de uma arquivo de texto no MySQL

Vamos aprender como popular uma tabela no MySQL apartir de um arquivo de texto.

A instrução load data local infile lê um arquivo de texto separado por tabulações (tab) e insere os dados na tabela.

Muito prático, pelo menos quando já temos arquivos separado por tabulações.

LOAD DATA LOCAL INFILE '/caminho/seu-arquivo' INTO TABLE nome-da-tabela;

Na matéria Criando tabelas no MySQL criamos a tabela pet, agora vamos popular esta tabela.

Vamos criar um arquivo chamado pet.txt, seu conteúdo se parece com o seguinte:

Fluffy  Harold  cat f   1993-02-04  \N
Claws   Gwen    cat m   1994-03-17  \N
Buffy   Harold  dog f   1989-05-13  \N
Fang    Benny   dog m   1990-08-27  \N
Bowser  Diane   dog m   1979-08-31  1995-07-29
Chirpy  Gwen    bird    f   1998-09-11  \N
Whistler    Gwen    bird    \N  1997-12-09  \N
Slim    Benny   snake   m   1996-04-29  \N

...onde \N representa valores nulos (desconhecidos).

No meu caso eu salvei o arquivo na pasta /home/flavio. Meu sql ficou assim:

LOAD DATA LOCAL INFILE '/home/flavio/pet.txt' INTO TABLE pet;

Se sua instalação do MySQL não permitir a execução da instrução você verá o erro 1148 (The used command is not allowed with this MySQL version), veja no final deste artigo como lidar com ele.

Como saber se deu certo? Execute a istrução select...

SELECT * FROM pet;

...sua tela deve parecer-se com a minha:

+----------+--------+---------+------+------------+------------+
| name     | ower   | species | sex  | birth      | death      |
+----------+--------+---------+------+------------+------------+
| Fluffy   | Harold | cat     | f    | 1993-02-04 | NULL       |
| Claws    | Gwen   | cat     | m    | 1994-03-17 | NULL       |
| Buffy    | Harold | dog     | f    | 1989-05-13 | NULL       |
| Fang     | Benny  | dog     | m    | 1990-08-27 | NULL       |
| Bowser   | Diane  | dog     | m    | 1979-08-31 | 1995-07-29 |
| Chirpy   | Gwen   | bird    | f    | 1998-09-11 | NULL       |
| Whistler | Gwen   | bird    | NULL | 1997-12-09 | NULL       |
| Slim     | Benny  | snake   | m    | 1996-04-29 | NULL       |
+----------+--------+---------+------+------------+------------+

Se você conseguiu inserir os dados mas eles não ficaram igual ao meu exemplo limpe a tabela com a sql TRUNCATE TABLE pet; e tente novamente.

Se preferir peque o exemplo neste gist.

Na próxima matéria veremos como manipular nossa tabela, para isso utilizaremos algumas instruções muito úteis (continuaremos utilizando a tabela pet).


Fonte

Lidando com o erro 1148

Ao executar a instrução LOAD DATA LOCAL INFILE e aparecer a seguinte mensagem de erro:

ERROR 1148 (42000): The used command is not allowed with this MySQL version

Significa que a ela não está habilitada.

Se você estiver no console será fácil resolver, basta logar-se ao MySQL com a opção --local-infile:

mysql --local-infile -u root -p

Para maiores detalhes veja Manual do MySQL - Security Issues with LOAD DATA LOCAL.

Navegue nesta série!

Comentários

comments powered by Disqus