Jump to content


Photo

Executar Sql Através De Arquivo Txt [resolvido]


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

#1 InSoNiA

InSoNiA

    Novato no fórum

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

Posted 21/05/2008, 11:19

Pessoal,

Preciso faezr o seguinte: Tenho executar uma instrução SQL através de um arquivo .TXT de modo que os registros sejam inseridos no BD.

Tenho uma tabela de nome "usuarios" onde tem 3 campos sendo eles CODUSUARIO, NOME, EMAIL
Ai criei um arquivo dados.txt onde tem por exemplo o conteudo da INSERT TABULADO inclusive já fiz teste local na minha máquina utilizando o seguinte comando: LOAD LOCAL DATA INFILE "dados.txt" INTO TABLE usuarios; e funciona normalmente.

arquivo dados.txt
1 NOME 1 EMAIL1@PROVEDOR.COM.BR
2 NOME 2 EMAIL2@PROVEDOR.COM.BR

Porém preciso fazer com que funcione de forma similar rodando no servidor, dessa forma fiz o seguinte script simples somente para teste mesmo:
<?php
include "../inc/config.php";

$arquivo = "/home/maneirat/public_html/testes/dados.txt";
$insere = mysql_query("LOAD DATA LOCAL INFILE" .$arquivo. "INTO TABLE usuarios"); 
if($insere) {
echo "OK";
} else {
echo "NÃO";
}
?>

Não esta fazendo a insert, alguém pode dar uma dica ou dizer o que está errado?

Edição feita por: InSoNiA, 21/05/2008, 12:27.


#2 Paulo Freitas

Paulo Freitas

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

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

Posted 21/05/2008, 11:39

Deixa eu adivinhar: sua máquina roda Windows e seu servidor roda Linux? :ponder:

Retirado do próprio manual do MySQL:

If you have generated the text file on a Windows system, you might have to use LINES TERMINATED BY '\r\n' to read the file properly, because Windows programs typically use two characters as a line terminator. Some programs, such as WordPad, might use \r as a line terminator when writing files. To read such files, use LINES TERMINATED BY '\r'.

http://dev.mysql.com.../load-data.html

Tenho quase certeza de que seja isto. (y)

[]’s :DAté mais

#3 InSoNiA

InSoNiA

    Novato no fórum

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

Posted 21/05/2008, 12:26

Paulo resolvido, o problema era que eu posso usar da seguinte forma:
$insere = mysql_query("LOAD DATA LOCAL INFILE 'dados.txt' INTO TABLE usuarios") or die(mysql_error());

E só pra constar não precisei usar os marcadores(é assim que chama? eheh) \r\n

Ficou simples, pois imaginei que por segurança deveriar especificar o diretório e não é assim que funciona.

Obrigado pela ajuda!

T+

Edição feita por: InSoNiA, 21/05/2008, 12:43.





1 user(s) are reading this topic

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

IPB Skin By Virteq