Re: [firebase-br] Importação de carga via arquivo texto para firebird

Reijanio Nunes Ribeiro rnribeiro em gmail.com
Seg Set 24 15:35:05 -03 2007


kra da uma olhada nisso n sei se é o q vc quer mais vamos ver:
so pra lembrar pro que eu queria funcionou blz
procedure TF_importar.BitBtn1Click(Sender: TObject);
var
Txt: TextFile;
mtexto: tstringList;
Entrada: string;
begin
BitBtn1.Enabled := False;

if opendialog1.Execute then
begin
screen.Cursor := crSQLWait;
mtexto := TStringlist.Create;
                    mtexto.LoadFromFile(opendialog1.FileName);
                    pb.Max := mtexto.Count - 1;
                    mtexto.Free;
//bitbt
  F_Importar.ClientDataSet1.EmptyDataSet;//zera tabela
  F_Importar.ClientDataSet1.Open;//abre tabela
  AssignFile(Txt,(Opendialog1.FileName
){'c:\Estudo\Importar\Lista_13P_modelo'});
 // Animate1.Visible := true;
 // animate1.Active := true;
  Reset(Txt);
  while not Eoln(Txt) do
  begin
    ReadLn(Txt,Entrada);
    //F_Importar.ClientDataSet1.open;
    F_Importar.ClientDataSet1.insert;
  //showMessage('-'+copy(entrada,1,13)+'-');
    F_Importar.ClientDataSet1.FieldByName('codigo').value
:=copy(entrada,01,13);
//   showMessage('-'+copy(entrada,1,13)+'-');
    F_Importar.ClientDataSet1.FieldByName('Descricao').Value
:=copy(entrada,14,25);
        F_Importar.ClientDataSet1.FieldByName('desc_complem').Value :=
copy(entrada,39,29);
 F_Importar.ClientDataSet1.FieldByName('qtd_min').value :=
copy(entrada,68,03);
                F_Importar.ClientDataSet1.FieldByName('preco_venda').Value
:= copy(entrada,71,12);
                    F_Importar.ClientDataSet1.FieldByName('cod_proc').Value
:= copy(entrada,83,01);

F_Importar.ClientDataSet1.FieldByName('perc_red_icms').Value :=
copy(entrada,84,02);

F_Importar.ClientDataSet1.FieldByName('perc_ipi').Value :=
copy(entrada,86,04);

F_Importar.ClientDataSet1.FieldByName('class_fiscal').Value :=
copy(entrada,90,10);

F_Importar.ClientDataSet1.FieldByName('modelo').Value :=
copy(entrada,100,130);

F_Importar.ClientDataSet1.FieldByName('hierarq_prod').Value :=
copy(entrada,230,18);

F_Importar.ClientDataSet1.FieldByName('terminador').Value :=
copy(entrada,248,01);
                    F_Importar.ClientDataSet1.Post;
                    end;
                    CloseFile(Txt);
                    //NeatoMeter1.Caption := 'Importação ralizada com
sucesso...';
                    //NeatoMeter1.percent := 100;
                    BitBtn1.Enabled := true;
                    F_IMportar.Height := 205;
                    F_Importar.ClientHeight := 180;
                    label1.Visible := true;
    label1.Caption := 'Foi importado um total de' +IntToStr(
clientDataSet1.RecordCount)+ 'Registros com sucesso';
screen.cursor :=crdefault;

  end;

end;

Em 24/09/07, Rodrigo Teodoro <rodrigo_teodoro em hotmail.com> escreveu:
>
>
> Alguém faz em seus programas importação de carga via arquivos txt (nao é
> XML, trata-se de cada linha um registro) para as tabelas no Firebird?
>
>
>
> Tenho um programa desenvolvido que faz a importação de carga usando
> DbExpress com ClientDataset já tendei usar importação bloco (reduz
> metade do tempo) mas ainda está dando gargalo na hora do insert dos
> registros.
>
>
>
> Pesquisei um pouco sobre External Tables mas ainda não achei nada de bom
>    em Delphi para gerar estes external files e até uma forma de gerar
> isto sem usar o próprio Firebird (ai não vale né! rs... )
>
>
>
> Alguém tem uma técnica bala para enfiar os registros rápido no * Firebird?
>
>
>
> Obs.: Quando digo gargalo, digo muitos registros memso, tipo 6 Mb de
> texto, o banco depois de carregado está ficando em torno de 13MB.
>
>
> Obrigado,
>
> Rodrigo Teodoro
> _________________________________________________________________
> Encontre o que procura com mais eficiência! Instale já a Barra de
> Ferramentas com Windows Desktop Search GRÁTIS!
> http://desktop.msn.com.br/
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista