Ajuda - Busca - Membros - Calendário
Versão Completa: (Resolvido)Erro ao importar dados de um banco para o outro
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
robinhocne
Pessoal estou importando dados de um banco para outro banco de uma determinada tabela.
Meu Banco de Dados é Firebird 2.0

no banco 1 tenho a seguinte tabela com os campos

CODE
*****ESTRUTURA*****


    CREATE TABLE CIDADE (
    CIDADE_CODIGO     INTEGER NOT NULL PRIMARY KEY,
    UF_CODIGO         INTEGER NOT NULL REFERENCES UF (UF_CODIGO),
    CIDADE_DESCRICAO  VARCHAR(72) NOT NULL COLLATE PXW_INTL850,
    CIDADE_CEP        VARCHAR(8) NOT NULL COLLATE PXW_INTL850
);


então estou exportando os dados dessa tabela Cidade para o banco 2 tabela ADM_CAD_CIDADE

CODE
*****ESTRUTURA*****

CREATE TABLE ADM_CAD_CIDADE (
    CODIGO  INTEGER NOT NULL PRIMARY KEY,
    CODUF   INTEGER NOT NULL REFERENCES ADM_CAD_UF (CODIGO),
    CIDADE  VARCHAR(100) NOT NULL,
    CEP     VARCHAR(8) NOT NULL
);



quando chega para importar do banco 1 (tabela Cidade) para o Banco 2 (tabela ADM_CAD_CIDADE)

ele dá erro numa linha de registro da tabela cidade.


tem o campo Cidade_Descricao da tabela Cidade com o seguinte dados : OLHO D'ÁGUA GRANDE

quando eu importo para o campo Cidade da tabela ADM_CAD_CIDADE ele dá esse erro abaixo:


CODE
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 86
ÁGUA.



Creio que seja por causa da ( ' ) aspa, mas nunca tive problema com isso!

alguém pode me ajudar ?????
Daniel Sanches
como você está fazendo para importar os dados ?? está usando algum componente ??? está fazendo um while eof na tabela e importando 1 a 1 ??

tente usar algo assim:

'insert into TABELA1 (CAMPO1,CAMPO2,CAMPO3) values(select CAMPO1,CAMPO2,CAMPO3 from TABELA2)'

colocando os campos das tabelas 1 e 2 nas respectivas ordens ...

robinhocne
QUOTE(Daniel Sanches @ 06/06/2010 - 15:45) *
como você está fazendo para importar os dados ?? está usando algum componente ??? está fazendo um while eof na tabela e importando 1 a 1 ??

tente usar algo assim:

'insert into TABELA1 (CAMPO1,CAMPO2,CAMPO3) values(select CAMPO1,CAMPO2,CAMPO3 from TABELA2)'

colocando os campos das tabelas 1 e 2 nas respectivas ordens ...



Estou pegando os dados da Tabela Cidade e deixando numa IbQuery e fazendo um while dessa maneira abaixo:

CODE
QryCidade.First;

  while not QryCidade.Eof do
    begin


      with QryCOLAS do
        begin
          close;
          sql.Clear;
          sql.Add('Insert Into Adm_Cad_Cidade ( Codigo, CodUf, Cidade, Cep ) values ( ' +
                  #39 + QryCidade.FieldByName('Cidade_Codigo').AsString + #39 +
                  ',' + #39 + QryCidade.FieldByName('Uf_Codigo').AsString + #39 +
                  ',' + #39 + QryCidade.FieldByName('Cidade_Descricao').AsString + #39 +
                  ',' + #39 + QryCidade.FieldByName('Cidade_Cep').AsString + #39 + ')');
          ExecSQL;
        end;


      QryCidade.Next;
    end;



QryCidade está conectada numa IbDataBase que é do Banco de dados 1
QryColas está conectada num IBCConnection1 que é do Banco de Dados 2
robinhocne
QUOTE(robinhocne @ 06/06/2010 - 15:57) *
QUOTE(Daniel Sanches @ 06/06/2010 - 15:45) *
como você está fazendo para importar os dados ?? está usando algum componente ??? está fazendo um while eof na tabela e importando 1 a 1 ??

tente usar algo assim:

'insert into TABELA1 (CAMPO1,CAMPO2,CAMPO3) values(select CAMPO1,CAMPO2,CAMPO3 from TABELA2)'

colocando os campos das tabelas 1 e 2 nas respectivas ordens ...



Estou pegando os dados da Tabela Cidade e deixando numa IbQuery e fazendo um while dessa maneira abaixo:

CODE
QryCidade.First;

  while not QryCidade.Eof do
    begin


      with QryCOLAS do
        begin
          close;
          sql.Clear;
          sql.Add('Insert Into Adm_Cad_Cidade ( Codigo, CodUf, Cidade, Cep ) values ( ' +
                  #39 + QryCidade.FieldByName('Cidade_Codigo').AsString + #39 +
                  ',' + #39 + QryCidade.FieldByName('Uf_Codigo').AsString + #39 +
                  ',' + #39 + QryCidade.FieldByName('Cidade_Descricao').AsString + #39 +
                  ',' + #39 + QryCidade.FieldByName('Cidade_Cep').AsString + #39 + ')');
          ExecSQL;
        end;


      QryCidade.Next;
    end;



QryCidade está conectada numa IbDataBase que é do Banco de dados 1
QryColas está conectada num IBCConnection1 que é do Banco de Dados 2





Consegui resolver..lembrei do StringReplace e ai pesquisei mais na internet para lembrar como funcionava direito...e fiz assim:

CODE
StringReplace(QryCidade.FieldByName('Cidade_Descricao').AsString, '''','',[rfReplaceAll])



agora importou......valrew pela ajuda Daniel....
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.