Ir para conteúdo

Arquivado

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

peterhall

load data file

Recommended Posts

boas. tenho este código para importar um ficheiro txt, acontece que dá sempre erro na linha 6 e quando não dá erro, também não adiciona linha nenhuma, o que estará errado???

 

<?php

$conexao = mysql_connect("localhost","root","");
mysql_select_db("dbase");

$sql = ("LOAD DATA INFILE 'C:/wamp/www/dir/file.txt' INTO TABLE table_name FIELDS TERMINATED BY '\t' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES");

mysql_close($conexao);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Observe o código postado mas atente para a forma como que a colorização foi feita.

 

Perceba o padrão. Nomes de função aparecem em preto e strings em verde. Que cor mysql_close() está e emqual deveria estar.

 

Uma dica. O erro está na sua query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Observe o código postado mas atente para a forma como que a colorização foi feita.

 

Perceba o padrão. Nomes de função aparecem em preto e strings em verde. Que cor mysql_close() está e emqual deveria estar.

 

Uma dica. O erro está na sua query.

 

 

pois, já reparei que sim, depois da explicação, acontece que já fiz milhentas alterações e nada, não funciona. essa query saquei do phpmyadmin quando fiz a importação através do "load data infile", depois criei o código php, fiz algumas alterações acrescentando a conexão e fecho da conexão à bdados.

 

importação pelo phpmyadmin:

LOAD DATA LOCAL INFILE 'C:\\wamp\\tmp\\php5A1.tmp' INTO TABLE `rfplansite_0_temp` FIELDS TERMINATED BY '\t' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES # Linhas afectadas: 64 -- mysql

 

o código gerado:

$sql = 'LOAD DATA LOCAL INFILE \'C:\\\\wamp\\\\tmp\\\\php5A1.tmp\' INTO TABLE `rfplansite_0_temp` FIELDS TERMINATED BY \'\\t\' ENCLOSED BY \'"\' ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\n\' IGNORE 1 LINES# Linhas afectadas: 64'

e o código após a alteração, sem erros, mas não importa nada:

<?php

$conexao = mysql_connect("localhost","root","");
mysql_select_db("dbase");

$sql = "LOAD DATA INFILE D:/pazevedo/Tool/OUT_Files/RFPlanSite_20100917.out INTO TABLE rfplansite_0_temp FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' IGNORE 1 LINES";

mysql_close($conexao);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais um tempinho... para importar qualquer tipo de ficheiro para mysql. com a função 'glob()', pode importar todos os ficheiros por extensão, padrâo, etc... como tem um loop a ser executado, importará todos os ficheiros até não haver mais e elimina-os.

 

atenção que no final, o script apaga os ficheiros importados com a função 'unlink()'. se não os quiserem eliminar, apaguem essa linha ou coloquem a função 'rename()' com o respectivo caminho e movam-nos para outra pasta.

 

 

<?php
// faz ligação à base de dados
$con = mysql_connect('localhost','root','');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  } 
mysql_select_db('base_dados', $con);

// lê todos os ficheiro existentes na pasta com o mesmo padrão
foreach (glob("D:/dir1/dir2/file_*.txt") as $arquivo) {
    echo "Importado o arquivo de origem de $arquivo com o tamanho ". filesize($arquivo) ."<br/>";

// importa os ficheiros para a tabela
$loadsql = ("LOAD DATA INFILE '$arquivo' INTO TABLE nome_da_tabela FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' IGNORE 1 LINES");

// executa a query
mysql_query($loadsql,$con);

// elimina os ficheiros na directoria
unlink($arquivo);
}

// fecha a conexão à base de dados
mysql_close($con);

?>

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.