Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Claudio Elias

importar um arquivo txt para o meu bd

Recommended Posts

Tenho um arquivo.txt de tal forma.

 

ex: cpf nome mes ano valor_total

 

sendo mais de 10.000 registro desta forma então eu queria importar este txt para meu bd, tenho uma tabela com os campos cpf, nome, ano, valor_total, e os campos do txt são separados por espaços sendo cada coluna do txt uma campo da tabela,

 

teria como fazer isto, e como fazer.

 

Desde de já muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

LOAD DATA INFILE 'C:\nome_arquivo.txt'

FIELDS TERMINATED BY ' '

INTO TABLE nome_tabela

(nome_atributo1, nome_atributo2, nome_atributoN)

 

Repare que no terminated by, entre aspas, está o caractere "espaço", de acordo com o seu arquivo...

 

Só verifique a sintaxe do LOAD DATA na documentação on-line do MySQL para confirmar, mas a idéia é essa aí...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso o PhpMyAdmin, então fui na parte de SqL dele e execulte o comando que você me passou mas veja o ERRO que deu

Erro
consulta SQL: 

LOAD DATA INFILE 'C:\072009.txt' FIELDS TERMINATED BY ' ' INTO TABLE teste(

cpf, nome, mes, ano, total
) 

Mensagens do MySQL :  

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIELDS TERMINATED BY ' ' 
INTO TABLE teste
(cpf, nome, mes, ano, total)' at line 2

Execultei tb no prompt mas só aparece desta forma " -> "

 

não entende o que ocorreu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso o PhpMyAdmin, então fui na parte de SqL dele e execulte o comando que você me passou mas veja o ERRO que deu

Erro
consulta SQL: 

LOAD DATA INFILE 'C:\072009.txt' FIELDS TERMINATED BY ' ' INTO TABLE teste(

cpf, nome, mes, ano, total
) 

Mensagens do MySQL :  

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIELDS TERMINATED BY ' ' 
INTO TABLE teste
(cpf, nome, mes, ano, total)' at line 2

Execultei tb no prompt mas só aparece desta forma " -> "

 

não entende o que ocorreu...

1. Passo:

O primeiro passo será criar uma tabela temporária com um registro do tipo char (não varchar) com o tamanho da linha do arquivo que você quer importar.

 

mysql> create table `temp` ( linha char(255) DEFAULT NULL ) engine=MyISAM;
Query OK, 0 rows affected (0.00 sec)

2. Passo:

O segundo passo é usar o comando

LOAD DATA LOCAL INFILE "C:\072009.txt" INTO TABLE <tabela-temporaria> LINES TERMINATED BY '\r\n'
se o arquivo foi gerado no DOS/Windows ou o comando

LOAD DATA LOCAL INFILE "C:\072009.txt" INTO TABLE sua_tabela" LINES TERMINATED BY '\n'
se o arquivo txt foi gerado no linux/unix.

 

mysql> load data local infile 'C:\072009.txt' into table temp lines terminated by '\n';
Query OK, 7 rows affected (0.00 sec)
Records: 7  Deleted: 0  Skipped: 0  Warnings: 0

Testando:

 

mysql> select * from temp;
+-------------------------------------------------------------------------------------------------------------------------+
| linha																												   |
+-------------------------------------------------------------------------------------------------------------------------+
| 000.000.000-00 fulano																	1			2009		28.00 |
| 000.000.000-00 ciclano																   2			2009		29.00 |
| 000.000.000-00 beutrano																  3			2009		30.00 |
| 000.000.000-00 neto																	  4			2009		31.00 |
| 000.000.000-00 joao batista															  5			2009		32.00 |
| 000.000.000-00 denis courcy															  6			2009		33.00 |
| 000.000.000-00 claudio elias															 7			2009		34.00 |
+-------------------------------------------------------------------------------------------------------------------------+
7 rows in set (0.00 sec)

Ok, Arquivo importado...

 

3. Passo:

O terceiro passo será usar o comando

INSERT INTO suatabela (<seus-campos>) SELECT substring(<campo>, x, y), ..., substring(<campo_n>, x_n, y_n) FROM <tabela-temporaria>;

mysql> insert into
	-> teste( cpf , nome , mes , ano , total )
	-> select
	-> rtrim( substr( linha ,   1 , 14 ) ) cpf,
	-> rtrim( substr( linha ,  16 , 74 ) ) nome,
	-> rtrim( substr( linha ,  90 , 12 ) ) mes,
	-> rtrim( substr( linha , 103 , 12 ) ) ano,
	-> rtrim( substr( linha , 115 , 12 ) ) total
	-> from
	->   temp;
Query OK, 7 rows affected (0.00 sec)
Records: 7  Duplicates: 0  Warnings: 0

Testando:

 

mysql> select * from teste;
+----+----------------+---------------+-----+------+-------+
| id | cpf			| nome		  | mes | ano  | total |
+----+----------------+---------------+-----+------+-------+
|  7 | 000.000.000-00 | fulano		|   1 | 2009 | 28.00 |
|  8 | 000.000.000-00 | ciclano	   |   2 | 2009 | 29.00 |
|  9 | 000.000.000-00 | beutrano	  |   3 | 2009 | 30.00 |
| 10 | 000.000.000-00 | neto		  |   4 | 2009 | 31.00 |
| 11 | 000.000.000-00 | joao batista  |   5 | 2009 | 32.00 |
| 12 | 000.000.000-00 | denis courcy  |   6 | 2009 | 33.00 |
| 13 | 000.000.000-00 | claudio elias |   7 | 2009 | 34.00 |
+----+----------------+---------------+-----+------+-------+
7 rows in set (0.00 sec)

Tudo funciona 100% !!!

 

4. Passo

O quarto passo será destruir a tabela temporária.

 

mysql> drop table temp;
Query OK, 0 rows affected (0.00 sec)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.