Ir para conteúdo

POWERED BY:

Arquivado

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

lojavirt

Importar dados usando TXT para MySQL

Recommended Posts

Preciso importar dados de um txt para um db Mysql.

 

Estou usando o script php abaixo, executando o mesmo substitui os dados dos campos mencionados (id, preco, estoque) da tabela "produtos", acontece que a tabela possui mais campos que são afetados substituindo os valores por NULL. Precisava que somente os campos mencionados (id, preco, estoque) tivessem seus dados alterados, os demais por exemplo (nome, fabricante...) continuassem com seus respectivos valores.

 

 

Script:

 

------------------------------------------------------------------------------------------------------------------

 

 

<?php

$conexao = mysql_connect("localhost", "xxxx", "xxxx");
if($conexao)
{
mysql_select_db("xxxxx", $conexao) or die("O banco solicitado não pode ser utilizado :  . mysql_error()");
}
else{echo "não foi possivel estabelecer uma conexão";}

//========================================

$tabela = "produtos"; //tabela do banco
$arquivo = 'aqruivodetexto.txt';// aquivo a ver importado 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(';', $conteudo);// divide por coluna onde tiver ponto e virgula
	}

	$sql = "Replace into $tabela(id, preco, estoque) VALUES ('$linha[0]', '$linha[1]', '$linha[2]')";
	$result = mysql_query($sql) or die(mysql_error());
	$linha = array();// limpa o array de $linha e volta para o for
}
echo "quantidade de linhas importadas = ".$ll;

?>
-----------------------------------------------------------------------------------------------------------------------

 

Exemplo do arquivo txt:

 

1501;80,00;120

1502;120,00;50

 

------------------------------------------------------------------------------------------------------------------------

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize a função UPDATE ao invés de REPLACE.

 

UPDATE produtos SET preco = '$linha[1]', estoque = '$linha[3]' WHERE id = '$linha[0]'

Compartilhar este post


Link para o post
Compartilhar em outros sites

UPDATE produtos SET preco = '$linha[1]', estoque = '$linha[3]' WHERE id = '$linha[0]'

Vagner, funcionou, mas esta tabela contém além dos campos id, valor e estoque mais campos, quando atualizo os demais campos perdem seus valores atuais e são substituidos por valor NULL. Acredito que falte uma linha indicando para não atualizar os outros campos, como por exemplo nome, descricao...

 

Note na imagem, as duas primeiras linhas foram atualizadas, os demais campos foram substituidos com valor Null a terceira linha não foi atualizada:

 

Imagem Postada

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.