[firebase-br] DESAFIO - IMPORTAÇÃO DE DADOS PARA BASE FIREBIRD

Valdir Marcos da Silva valdir.marcos em ig.com.br
Sáb Jan 26 12:13:10 -03 2008


Bom dia.

O melhor caminho que encontrei para resolver casos como o seu foi
criar tabelas externas no Firebird para ler os dados rapidamente,
depois inserir esses dados em uma tabela convencional (com índices
para agilizar futuras pesquisas) via "Insert Into Tabela (campos)
Select campos From Tabela;" e fazer todas as pesquisas que preciso na
tabela convencional.

No seu caso, para ficar rápido, você pode gerar a tabela de destino
numa tabela convencional do Firebird e depois levar os dados
finalizados para outra tabela externa que poderia ser lida por outra
aplicação.

Um abraço,

Valdir


Em 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.




Mais detalhes sobre a lista de discussão lista