Ir para conteúdo

POWERED BY:

Arquivado

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

ViniciusPackeiser.com

Importar dados txt para inserir em banco mysql

Recommended Posts

Olá pessoal,

Estou com a seguinte dificuldade, segue um layout de aquivo txt que vou importar;

 

---

Linha 01 item 1 ; Linha 01 item 2 ; Linha 01 item 3

Linha 02 item 1 ; Linha 02 item 2 ; Linha 02 item 3
Linha 03 item 1 ; Linha 03 item 2 ; Linha 03 item 3
---
Preciso separar os dados por ";" e por linhas. Cada ";" é uma coluna da tabela e cada linha seria um insert (id) no banco. Estou utilizando o seguinte código, porem não estou conseguindo separar as linhas, somente os ";".
---
<?
$filename = "teste.txt";
$arq = fopen ($filename, "r");
$read = fread ($arq, filesize ($filename) );
$separador = ";";
$array = explode($separador, $read);
$conta = count($array);
for ($i=0; $i < $conta; $i++) {
echo $array[$i];
}
?>
---

 

Agradeço a atenção e ajuda de vcs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você ta no caminho certo

 

1º - Ler o arquivo

2º - Ler linha a linha

3º - Usar o metodo explode

4º - Salvar no banco

 

Só que você precisa ler linha a linha pra dar certo, no seu código só esta pegando a primeira a linha.

 

Fiz um exemplo rapidinho aqui e eu acho que vai te ajudar.

 

<?php

	//Abre o arquivo de texto para importar
	//Utilizando apenas o modo leitura "r"
	$texto = fopen("texto.txt", "r");

	//Executa enquanto possuir registro
	while(!feof($texto))
	{
		//Pega a informação de uma linha
		$linha = fgets($texto);
		
		//Separa os valores por ; (irá gerar um array)
		$dadosTratados = explode(";", $linha);

		//Percorre o array
		foreach ($dadosTratados as $dados)
		{
			echo "Insere no banco ".$dados."<br />";
		}	
	}
?>

Uma dica: Quando você for usar Hard Coding, ou seja, quando você chumbar o valor no código e for utilizar apenas uma vez, evita de usar varíavel. Porque pode confundir bastante.

 

Como o próprio nome diz, é uma VARIAVEL, e você esta usando uma unica vez o valor, na minha opinião fica muito ruim para dar manutenção depois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda Joao Felix_147210.

 

Consegui a solução com o seguinte código:

 

<?php

// Local do arquivo
$arquivo = fopen("teste.txt", "r");

// Se o arquivo tiver cabeçalho
// $cabecalho = fgets($arquivo);

// Lê todas as linhas do arquivo
while (($linha = fgets($arquivo)) !== FALSE) {

  // divide os dados baseado em um separador ";"
  $parte = explode(";", $linha);

  // Executa uma query de insert no dados no banco
  // $sql_query = "INSERT INTO tabela (campo1, campo2, campo3) VALUES ('" . $parte[0] . "', '" . $parte[1] . "', '" . $parte[2] . "')";
  // $sql = mysql_query ($sql_query) or die(mysql_error());

  echo "" . $parte[0] . " <br /> " . $parte[1] . " <br /> " . $parte[2] . " <br />";

} // while

// Fecha o arquivo aberto
fclose($arq);

?>

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.