Ir para conteúdo
Fórum Script Brasil
  • 0

Importação TXT (erro)


reunix

Pergunta

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 para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...