[firebase-br] O Problema ainda não foi resolvido

FERNANDO HERCULANO afhbarros em hotmail.com
Dom Jan 27 21:10:56 -03 2008


Tentei esta alternativa, mas mesmo assim o tempo é muito longo, se comparado ao SQL*LOAD,
chegando a passar mais de 30 minutos, ( Os testes sao feitos na mesma maquia ).
 
Espero que surja outra alternativa.
-----------------------------------
 
 
Bom dia.O melhor caminho que encontrei para resolver casos como o seu foicriar tabelas externas no Firebird para ler os dados rapidamente,depois inserir esses dados em uma tabela convencional (com índicespara agilizar futuras pesquisas) via "Insert Into Tabela (campos)Select campos From Tabela;" e fazer todas as pesquisas que preciso natabela convencional.No seu caso, para ficar rápido, você pode gerar a tabela de destinonuma tabela convencional do Firebird e depois levar os dadosfinalizados para outra tabela externa que poderia ser lida por outraaplicação.Um abraço,ValdirEm 26/01/08, FERNANDO HERCULANO<afhbarros em hotmail.com> escreveu:> Caros Amigos,>> Estou com um dilema, espero que me ajudem.>>     Uso o firebird desde que foi lançado, antes usava o interbase (e este desde a versao 5), nunca encontrei limitações que> não pudessem ser superadas, mas agora encontro-me em frente ao maior desafio. Segue a descrição.>>     O PROBLEMA:>>   Preciso povoar duas tabela "A" e "B" com dados de um arquivo texto que tem linhas de tamanho variado e que as maiores chegam a 500 caracteres,> cada linha deve ficar em um registro de cada tabela, e a cada processo estas tabelas sao limpas e depois povoadas, cada arquivo texto tem em torno de> 1.100.000 linhas. Depois de povoadas tenho que separar os dados que existem na tabela "A" e não existem na tabela "B", para que de posse destes dados> sejam criados dois arquivos textos para uso por outro aplicativo. Estou usando delphi 7. Tenho que usar recursos do proprio banco, ou aplicações que possam> ser chamadas via linha de comando para povoar as tabelas.>>    COMENTARIOS E TENTATIVAS:>>    O Problema principal é o desempenho no povoamento das tabelas, pois,  depois das tabelas terem sido povoadas o Firebird dá conta do recado, sendo mais rápido que o Oracle nas consultas sql.>    O Oracle tem um aplicativo (SQL*LOADER) que tem um desempenho muito bom e carrega a massa de dados de cada tabela em menus de 1 (UM) minuto, e pode ser chamado a partir do delphi.>    A carga dos dados a partir de TABELAS EXTERNAS criadas no firebird é imediata para visualização, mas quando se faz o comando SQL para comparar os dados,> o tempo fica muito longo chegando a dezenas de minutos para cada um dos select's.>    Tentei usar o FSQL, mas ele reclama do tamanho das linhas de inserção.>    Foi tambem frustante carregar a massa de dados usando o delphi, mesmo acessando os arquivos com rotinas pascal.>>    EXPECTATIVAS:>>    Desejo continuar usando o Firebird, pois até agora tem superado as minhas expectativas, mas com o Oracle XE me dando 4 GB de espaço para trabalhar e> sem alternativas em vista já estou cogitando a mudança.>>    Peço a ajuda de vcs para resolver a questão.
_________________________________________________________________
Receba GRÁTIS as mensagens do Messenger no seu celular quando você estiver offline. Conheça  o MSN Mobile!
http://mobile.live.com/signup/signup2.aspx?lc=pt-br


Mais detalhes sobre a lista de discussão lista