Array
(
)

Importar e exportar no FIreBird

Carlosceuma
   - 20 mar 2006

Olá a todos,
gostaria de uma ajuda a respeito da importação de informações
de tabelas do FireBird.
o negócio é o seguinte:
fiz a exportação de informações de uma tabela do firebird para
arquivo em disquete, até aí tudo bem.
depois fiz a importação dessas informações que não tive
nehuma dificuldade, porém, se não houvesse a o problema de
duplicidade dessas informações.
seria a situação em que o usuário importasse várias vezes
essas informações ocasionando duplicidade na tabela.
gostaria de saber como faço para chegar as informações antes
de serem importadas definitivamente, assim,
impedir a duplicidade das informações importadas.


Edilcimar
   - 20 mar 2006

existem dois tipos de recuperação de dados
1) total, onde todo o banco de dados é recuperado e tudo é substituído pelo antigo
2) parcial onde apenas aquilo que é desejado é substituído, este tipo é mais complicado pois vc deve dar ao usuário a possibilidade de escolher aquilo de deverá ser substituído, porém deverá ter em mente a probabilidade do cliente escolher ´coisa errada´, ou seja deverá fazer uma rotina onde a substituição de algo já existente deve ser muito bem analisada, neste caso deverá impedir a duplicidade de dados, porém haverá a possibilidade de substituição de dados verdadeiros por dados falsos


Paullsoftware
   - 21 mar 2006

caro carlosceuma,
eu faço todos os dias a importação/checagem de mais/menos 20000 registros de uma tabela de clientes, isso, pq o outro programador aqui da empresa resolveu colocar a informação Devedor na tabela do cadastro de clientes, então, o que eu faço é o seguinte:
:arrow: :arrow: :arrow:
#Código

Var Registros: TStringList;
ListaCampos: TStringList;
j: Integer ;
vUpDate : Boolean;
Const Enter_ = #13 + 10;
begin
....

Carrego os dados a serem importados em uma StringList :!: :!: :!:
#Código

Registros := TStringList.Create;
ListaCampos := TStringList.Create;
Registros.LoadFromFile(NomeArquivo);

faço uma pesquisa na minha tabela para ver se o registro já existe na tabela e... :idea: :idea:
#Código

if ListaCampos[0] <> ´´ then
begin
TITULAR.Close;
TITULAR.SelectSQL[1]:=´ WHERE CODSAFPE=:PESQUISA ´;
TITULAR.ParamByName(´PESQUISA´).AsString := ListaCampos[0];
TITULAR.Open;
end;

onde faço uma comparação dos valores 1 a 1, para ver se houve alteração e trabalho com três ipóteses:
1 - Se não houver alterações passo para o proximo registro;
2 - Havendo alterações Atualizo os dados do Registro;
3 - Não existindo o Registro Incluo como novo;
não existe a bossibilidade de duplicação, o principal é vc criar um campo chave (nomalmente o ID do Registro) que jamais será duplicado! :roll: espero ter ajudado! :wink:


Carlosceuma
   - 21 mar 2006

Olá Edcilmar e Paull,
Valeu mesmo a dica mas, Paull eu já tive esta ideia sim, mas o que uso como exportador é um componete do IBX o IBSQL, ele exporta do banco de dados somento o que o usuário deseja exportar e ele também faz a importação do que foi exportar, porém, importa tudo que foi exportado.
eu queria fazer uma forma de fazer esta verificação, conforme vc mencionou PAULL, mas não sei fazer isso com este componente IBSQL que utilizo.
de qualquer forma, agradeço de montão aos dois.


Carlosceuma
   - 23 mar 2006

Alguém poderia dar essa força para importar dados para uma tabela em um banco de dados do Firebird, porém, antes de importar definitivamente, ele verificasse se tem informações já lançadas, ,ou seja, em duplicidade.
de já agradeço de montão.