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