Jump to content
Fórum Script Brasil
  • 0

Importação TXT (erro)


reunix

Question

Olá pessoal andei procurando uma solução por um tempo e não consegui resolver meu probleminha,

no caso é somente importar um arqujvo txt pro banco de dados q no meu caso é Postgres, o script ta funcionando 99%,

1% é justamente o erro q ocorre, quando um registro do TXT contém uma aspas simples o sistema da erro:

tipo:

LOJÃO D' VIDROS

MARIA D' CARMO

Script de importação:

// muito simples
   $filename = "../../arquivos/".$arquivo;     
   $handle   = fopen($filename, 'r');
   $data     = fread($handle, filesize($filename));
   $rowsArr  = explodeRows($data);
   $lineDetails = explodeTabs($rowsArr[0]);
dai eu acesso os campos da seguinte forma:
$nome        = trim($lineDetails[4]);
   $endereco = trim($lineDetails[7]);
Agora para gravar no banco
$query = "UPDATE corretores
   SET 
   nome                  ='$nome',
   end_fenacor    ='$endereco' 
   WHERE cic = '$cic' ";
já tentei de várias formas para extrarir a informacao:
1. $nome    = trim($lineDetails[4]);
  2. $nome    =  addslashes(trim($lineDetails[4])); 
  3. $nome    =  htmlentities(addslashes(trim($lineDetails[4])));
e para gravar tentei de outras formas também!!!
UPDATE corretores
   SET 
   nome=".addslashes($nome).", 
   endereco ='$endereco' ...
ERRO
"UPDATE corretores
   SET 
   nome =".$nome.",
   endereco =".$endereco." ...
ERRO
"UPDATE corretores
   SET 
   nome =".$nome.",
   endereco =\"'$endereco'\" ...
ERRO Mensagem do erro: no caso de tentar gravar dessa forma: update set nome = '$nome'....
Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou próximo a "ARCE" LINE 3: nome ='BERTINE ROSE D'ARCE CANDIDO',

Quem já passou por isso por favor me digam onde estou errando!!

Agradeço desde já

at+

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
Olá pessoal andei procurando uma solução por um tempo e não consegui resolver meu probleminha,

no caso é somente importar um arqujvo txt pro banco de dados q no meu caso é Postgres, o script ta funcionando 99%,

1% é justamente o erro q ocorre, quando um registro do TXT contém uma aspas simples o sistema da erro:

tipo:

LOJÃO D' VIDROS

MARIA D' CARMO

Script de importação:

// muito simples
   $filename = "../../arquivos/".$arquivo;     
   $handle   = fopen($filename, 'r');
   $data     = fread($handle, filesize($filename));
   $rowsArr  = explodeRows($data);
   $lineDetails = explodeTabs($rowsArr[0]);
dai eu acesso os campos da seguinte forma:
$nome        = trim($lineDetails[4]);
   $endereco = trim($lineDetails[7]);
Agora para gravar no banco
$query = "UPDATE corretores
   SET 
   nome                  ='$nome',
   end_fenacor    ='$endereco' 
   WHERE cic = '$cic' ";
já tentei de várias formas para extrarir a informacao:
1. $nome    = trim($lineDetails[4]);
  2. $nome    =  addslashes(trim($lineDetails[4])); 
  3. $nome    =  htmlentities(addslashes(trim($lineDetails[4])));
e para gravar tentei de outras formas também!!!
UPDATE corretores
   SET 
   nome=".addslashes($nome).", 
   endereco ='$endereco' ...
ERRO
"UPDATE corretores
   SET 
   nome =".$nome.",
   endereco =".$endereco." ...
ERRO
"UPDATE corretores
   SET 
   nome =".$nome.",
   endereco =\"'$endereco'\" ...
ERRO Mensagem do erro: no caso de tentar gravar dessa forma: update set nome = '$nome'....
Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou próximo a "ARCE" LINE 3: nome ='BERTINE ROSE D'ARCE CANDIDO',

Quem já passou por isso por favor me digam onde estou errando!!

Agradeço desde já

at+

post o modelo do arquivo.

como está escrito e o que você quer pegar.

Link to comment
Share on other sites

  • 0
Já tentou com str_replace()?

É possível trocar o caractere (aspas simples) por algum outro.

Olá Mji, pensei nisso mas acredito que ficará lento, pois terei que substirir varios campos: nome, endereco, cidade, bairro

e a leitura é feita letra-a-letra

mas obrrigado, se tiver outra sugestão!!

at+

Olá pessoal andei procurando uma solução por um tempo e não consegui resolver meu probleminha,

no caso é somente importar um arqujvo txt pro banco de dados q no meu caso é Postgres, o script ta funcionando 99%,

1% é justamente o erro q ocorre, quando um registro do TXT contém uma aspas simples o sistema da erro:

tipo:

LOJÃO D' VIDROS

MARIA D' CARMO

Script de importação:

// muito simples
   $filename = "../../arquivos/".$arquivo;     
   $handle   = fopen($filename, 'r');
   $data     = fread($handle, filesize($filename));
   $rowsArr  = explodeRows($data);
   $lineDetails = explodeTabs($rowsArr[0]);
dai eu acesso os campos da seguinte forma:
$nome        = trim($lineDetails[4]);
   $endereco = trim($lineDetails[7]);
Agora para gravar no banco
$query = "UPDATE corretores
   SET 
   nome                  ='$nome',
   end_fenacor    ='$endereco' 
   WHERE cic = '$cic' ";
já tentei de várias formas para extrarir a informacao:
1. $nome    = trim($lineDetails[4]);
  2. $nome    =  addslashes(trim($lineDetails[4])); 
  3. $nome    =  htmlentities(addslashes(trim($lineDetails[4])));
e para gravar tentei de outras formas também!!!
UPDATE corretores
   SET 
   nome=".addslashes($nome).", 
   endereco ='$endereco' ...
ERRO
"UPDATE corretores
   SET 
   nome =".$nome.",
   endereco =".$endereco." ...
ERRO
"UPDATE corretores
   SET 
   nome =".$nome.",
   endereco =\"'$endereco'\" ...
ERRO Mensagem do erro: no caso de tentar gravar dessa forma: update set nome = '$nome'....
Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou próximo a "ARCE" LINE 3: nome ='BERTINE ROSE D'ARCE CANDIDO',
Quem já passou por isso por favor me digam onde estou errando!! Agradeço desde já at+
post o modelo do arquivo. como está escrito e o que você quer pegar.
RICK, segue o modelo do arquivo:
CIC    COD_CORR    TIP_PESSOA    SITUACAO    NOME    IDENTIDADE    ORGAO    ENDERECO    BAIRRO    CIDADE    CEP    FONE1    FONE2    EMAIL    DAT_NASC    DAT_CONCES    UF    SEXO    VENCIMENTO    ULTIMA_ALTERACAO    CAP_SOCIAL
00000023959479    058916.150002569    F    N    MARIA2 OK DE POMPEIA CAVALCANTI SILVA    CO.342620    SSP/PE    END. AV. CARLOS DE LIMA CAVALCANTI, 214     BAIRRO OK NOVO    CIDADEA    53030260         8134 86124309      GUTES@NASSAU.COM.BR    18/05/1929    01/10/1989    PE    F        29/08/2005    600.00
00000001422772    10.0000445    F        ELIANE VERCOSA DE MELLO    380.946    SSP/PE    AV. BOA VIAGEM, 4000 1902    BOA VIAGEM    RECIFE    51021-000        81 34653316    LOURD4@HOTMAIL.COM    12/11/1935    01/10/1989    PE    F    16/12/2013    04/09/2008

ele está delimitado por tabulação, não estou tento problemas em ler os dados, somente na hora de gravar, que provavelmente é na instrução do (UPDATE SET), quando ele ler do arqivo contento a aspa simples, meu script se quebar:

$query = " UPDATE TABL SET NOME = '$nome'

WHERE ID = '$id' ";

provavelmente por isso o erro:

Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou próximo a "ARCE" LINE 3: nome ='BERTINE ROSE D'ARCE CANDIDO',

agradeço sua atenção ;

se puder ajudar.

at+

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...