Jump to content


Photo

Importar Dados Arquivo Txt


  • Faça o login para participar
8 replies to this topic

#1 Tiones

Tiones

    Turista

  • Usuários
  • 43 posts
  • Sexo:Não informado

Posted 07/07/2008, 23:09

Olá boa Noite Pessoal estou com, uma duvida estou querendo criar um script em php q leia um arquivo txt, e que seus dados são separados ";" e coloque esse dados em uma tabela do mysql

EX:

Nome; idade; sexo; CI;
Nome1; idade1; sexo1; CI1;
Nome2; idade2; sexo2; CI2;

e depois de ler os dados de uma linha apagalos do arquivo

POr favor alguém já vez ou saber como fazer ? para pode me ajudar

#2 victorhb

victorhb

    24 Horas

  • Usuários
  • 489 posts
  • Sexo:Masculino
  • Localidade:Brasília-DF

Posted 08/07/2008, 00:50

Olá boa Noite Pessoal estou com, uma duvida estou querendo criar um script em php q leia um arquivo txt, e que seus dados são separados ";" e coloque esse dados em uma tabela do mysql

EX:

Nome; idade; sexo; CI;
Nome1; idade1; sexo1; CI1;
Nome2; idade2; sexo2; CI2;

e depois de ler os dados de uma linha apagalos do arquivo

POr favor alguém já vez ou saber como fazer ? para pode me ajudar


Tenta assim

<?php

$ler=file("nomedoarquivo.txt")

foreach ($ler as $linha)

{

$explode=explode(';',$linha);
list($nome,$idade,$sexo,$ci)=$explode;

mysql_query("INSERT INTO suatabela VALUES ('$nome','$idade,'$sexo','$ci')");

}

Edição feita por: victorhb, 08/07/2008, 00:51.


#3 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 08/07/2008, 01:23

Tenta assim

<?php

$ler=file("nomedoarquivo.txt")

foreach ($ler as $linha)

{

$explode=explode(';',$linha);
list($nome,$idade,$sexo,$ci)=$explode;

mysql_query("INSERT INTO suatabela VALUES ('$nome','$idade,'$sexo','$ci')");

}

A primeira linha é a descrição das outras... :assobio:

Isso resolve:

foreach (file('csv.txt') as $line_num => $line) {
	if ($line_num == 0) {
		continue;
	}

	list($nome, $idade, $sexo, $ci) = sscanf($line, '%s;%s;%s;%s;');

	// instruções de banco de dados aqui
}
Isso está com cara de padrão CSV. Poderia ser feito assim também (apesar do código ficar maior, seria mais semântico):

$csv_file = fopen('csv.txt', 'r');
$can_pass = false;

while (($data = fgetcsv($csv_file, 0, ';')) !== false) {
	if (!$can_pass) {
		$headers  = array_filter($data);
		$can_pass = true;
	} else {
		foreach ($headers as $id => $name) {
			$line[$name] = $data[$id];
		}

		// PHP 5: $line = array_combine($headers, array_filter($data));

		// instruções de banco de dados aqui - usar $line['Nome'], $line['idade'], etc.
	}
}
No futuro, com str_getcsv(), ficará mais prático. :)

[]’s :DAté mais

#4 victorhb

victorhb

    24 Horas

  • Usuários
  • 489 posts
  • Sexo:Masculino
  • Localidade:Brasília-DF

Posted 08/07/2008, 03:47

A primeira linha é a descrição das outras... :assobio:


Deve ser mesmo, mas isso não ficou explícito, detalhe que a gente só deu uma solução, tem o algoritmo pra apagar a linha do arquivo também.

#5 Tiones

Tiones

    Turista

  • Usuários
  • 43 posts
  • Sexo:Não informado

Posted 08/07/2008, 06:34

sim pessoal tem a primeira linha q é descrição da demais linha isso, fazendo com que tenha q dispensar a primeira linha, e temos q ver como fazer para apagar a linha que foi lida. Assim outro detalhes em uma pasta tem varios arquivos txt com nome diferentescomo fazer para fazer uma varredura em todos, pois tem a mesma estrutura, só mudando o nome

#6 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 08/07/2008, 06:49

Você quer apagar a linha que foi lida ou apagar o conteúdo do arquivo ou excluir o arquivo? Gostaria que explicasse melhor esta parte. Se ofr apagar a linha que foi lida, qual é a intenção, deixar só a primeira linha (de cabeçalho)?

[]’s :D Até mais

#7 Tiones

Tiones

    Turista

  • Usuários
  • 43 posts
  • Sexo:Não informado

Posted 08/07/2008, 09:18

Veja bem o txt é sempre completado por outro programa, outro programa está sempre escrevendo nele entaum aquilo q eu já lir e coloquei no BD naum precisp mais ler, entaum eu quero apaga-lo

#8 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 08/07/2008, 20:32

Veja bem o txt é sempre completado por outro programa, outro programa está sempre escrevendo nele entaum aquilo q eu já lir e coloquei no BD naum precisp mais ler, entaum eu quero apaga-lo

Apagar o arquivo já não resolveria o problema? Ou o outro programa precisa que ele exista para sobrescrevê-lo?

Se o arquivo pode ser apagado:

unlink('arquivo.txt');
Se o arquivo deve permanecer, mas ter seu conteúdo removido:

file_put_contents('arquivo.txt', ''); // PHP 5
fwrite(fopen('arquivo.txt', 'w'), ''); // PHP 4
Para varrer o diretório de arquivos de texto, você pode fazer assim:

foreach (glob('./*.txt') as $filename) { // alterar diretório conforme necessidade
	foreach (file($filename) as $line_num => $line) {
		if ($line_num == 0) {
			continue;
		}

		list($nome, $idade, $sexo, $ci) = sscanf($line, '%s;%s;%s;%s;');

		// instruções de banco de dados aqui
	}
}
[]’s :DAté mais

#9 thiago_2002

thiago_2002

    12 Horas

  • Usuários
  • 132 posts
  • Sexo:Não informado

Posted 09/07/2008, 00:24

então cara, vc pediu um codigo em php, mas não sei se vc conhece em todo caso vou postar aqui, um comando do MySQL, que faz automaticamente o que vc quer:

LOAD DATA
	   INFILE 'C:\\nome_da_sua_pasta\\seu_arquivo_csv.csv'
   INTO TABLE `nome_da_sua_tabela`
	   FIELDS TERMINATED BY ';'
   ESCAPED BY '\\'
		LINES TERMINATED BY '\r\n'

a unica coisa que nao vai fazer é remover a linha inserida do seu arquivo




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq