Jump to content


Photo

Envio De Txt Para Mysql


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

#1 Sp3ak3

Sp3ak3

    12 Horas

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

Posted 27/08/2010, 12:58

galera, verifiquei que meus arquivos e separados por tab, entao pesquizando na net vi um script e adaptei ele as minhas necessidades. so que ele continuou nao fazendo o cadastro certo, so faz na primeira coluna da tabela.

<?php

include"includes/conecta.php";

$tabela = "ctrc"; //tabela do banco
$arquivo = 'teste.txt';

$arq = fopen($arquivo,'r');// le o arquivo txt

while(!feof($arq))
for($i=0; $i<1; $i++){
	if ($conteudo = fgets($arq)){//se extrair uma linha e não for false
		$ll++; // $ll recebe mais 1 ==== em quanto o existir linha sera somada aqui
		$linha = explode('\t', $conteudo);// divide por coluna onde tiver tab
	}

	$sql = "INSERT INTO $tabela (ctrc, data, cnpjrem, remetente, cnpjtrans, transportadora, cnpjdest, destinatario, prevent, nfs, vols, pesocub, pesoafe, vlrmerc, vlrfrete, vlrped, vlrgris, vlrtxdesp, vlricms, vlrtotal, tipo, ordem, dataentrega) VALUES ('$linha[0]', '$linha[1]', '$linha[2]', '$linha[3]', '$linha[4]', '$linha[5]', '$linha[6]', '$linha[7]', '$linha[8]', '$linha[9]', '$linha[10]', '$linha[11]', '$linha[12]', '$linha[13]', '$linha[14]', '$linha[15]', '$linha[16]', '$linha[17]', '$linha[18]', '$linha[19]', '$linha[20]', '$linha[21]', '$linha[22]')";
	$result = mysql_query($sql) or die(mysql_error());
	$linha = array();// linpa o array de $linha e volta para o for
}
echo "quantidade de linhas importadas = ".$ll;

?>

Edição feita por: Sp3ak3, 27/08/2010, 12:59.


#2 chipis

chipis

    24 Horas

  • Usuários
  • 439 posts
  • Sexo:Masculino
  • Localidade:Blumenau - SC

Posted 27/08/2010, 13:45

Olá.

Tenta assim:
$linhas = file($arquivo);

$total = Count($linhas);

for ($i=0; $i<$total; $i++){
    
   $linha = explode("\t",$linhas[$i]); 
    
   # sua sql aqui   
}

flws...

#3 Sp3ak3

Sp3ak3

    12 Horas

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

Posted 27/08/2010, 14:05

Olá.

Tenta assim:

$linhas = file($arquivo);

$total = Count($linhas);

for ($i=0; $i<$total; $i++){
    
   $linha = explode("\t",$linhas[$i]); 
    
   # sua sql aqui   
}

flws...


fiz assim e continuou cadastrando tudo na primeira coluna.

<?php

include"includes/conecta.php";

$tabela = "ctrc"; //tabela do banco
$arquivo = 'tv.txt';

$arq = fopen($arquivo,'r');// le o arquivo txt

while(!feof($arq))
$linhas = file($arquivo);

$total = Count($linhas);

for ($i=0; $i<$total; $i++){
    
   $linha = explode("\t",$linhas[$i]);
	}

	$sql = "INSERT INTO $tabela (ctrc, data, cnpjrem, remetente, cnpjtrans, transportadora, cnpjdest, destinatario, prevent, nfs, vols, pesocub, pesoafe, vlrmerc, vlrfrete, vlrped, vlrgris, vlrtxdesp, vlricms, vlrtotal, tipo, ordem, dataentrega) VALUES ('$linha[0]', '$linha[1]', '$linha[2]', '$linha[3]', '$linha[4]', '$linha[5]', '$linha[6]', '$linha[7]', '$linha[8]', '$linha[9]', '$linha[10]', '$linha[11]', '$linha[12]', '$linha[13]', '$linha[14]', '$linha[15]', '$linha[16]', '$linha[17]', '$linha[18]', '$linha[19]', '$linha[20]', '$linha[21]', '$linha[22]')";
	$result = mysql_query($sql) or die(mysql_error());
	echo "$linha[0] - OK";
	echo "<br>";
	$linha = array();// linpa o array de $linha e volta para o for
}
echo "quantidade de linhas importadas = ".$ll;

?>


#4 Alan Martini

Alan Martini

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:Campo Bom, RS
  • Interesses:De tudo um pouco

Posted 27/08/2010, 14:32

Boa Tarde,

Não foi "aberto" o while, faltou uma {

Verifique se realmente existe o "\t" na linha recebida para a separação.

Abraço
Este post lhe ajudou/foi útil? Retribua(+)
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini

#5 chipis

chipis

    24 Horas

  • Usuários
  • 439 posts
  • Sexo:Masculino
  • Localidade:Blumenau - SC

Posted 27/08/2010, 15:23

Posta umas linhas do arquivo que você esta tentando importar, para darmos uma olhada.

#6 Sp3ak3

Sp3ak3

    12 Horas

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

Posted 27/08/2010, 15:44

Posta umas linhas do arquivo que você esta tentando importar, para darmos uma olhada.


o arquivo e separado por tab.

glo	globo	globo	globo

mais um exemplo claro de arquivo que vou usar e:

www.rglog.midiavirtual.net/re.txt

#7 chipis

chipis

    24 Horas

  • Usuários
  • 439 posts
  • Sexo:Masculino
  • Localidade:Blumenau - SC

Posted 03/09/2010, 14:04

Olá, pelo que pude observar o seu arquivo txt está formatado com o tamanho dos campos da tabela do banco de dados.
Uso a função substr(), algo assim:
$nr_inseridos = 0;
$nr_alterados = 0;

$texto = file("arquivo.txt");
$total_linhas = count($texto);
$caracteres = strlen($texto[1]);

if ($caracteres == 100){//#OBS. totoal de caracteres da linha
for ($i=0; $i<$total_linhas; $i++){
    $linha = $texto[$i];
    
    $campo1	=	substr($linha, 0, 6);
    $campo2	=	substr($linha, 6, 10);
    $campo3	=	substr($linha, 16, 2);
    $campo4	=	substr($linha, 18, 2);
    $campo5	=	substr($linha, 20, 2);
    $campo6	=	substr($linha, 22, 2);
    $campo7	=	substr($linha, 24, 6);
    $campo8	=	substr($linha, 30, 6);

  }
}





0 user(s) are reading this topic

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

IPB Skin By Virteq