De arquivo texto para banco de dados

Delphi

16/11/2004

Boa noite amigos tenho uma duvida que se fosse solucionada ia me fazer ganhar um tempão na minha rotina de trabalho.
Bem é o seguinte.
Em um diretório tenho N numeros de arquivos *.txt e gostaria dae uma forma altomatica de passa-los para um banco de dados.
Se a função conseguisse ler algo como *.txt seria lindo mas se isso for complicado estes arquivos podem ser numerados de 01.. N.
Pesso uma orientação de por onde começar ou como agir.
Não estou pedindo para que ninguém deselvolva ( trabalhe ) para mim.
Tenho forte intenção de me tornar um deselvolvedor de nivel na plataforma e para isso é necessario que eu mais que solucinoe os problemas mas aprenda a interagir de modo eficiente com a ferramenta a ponto de conseguir vislumbrar o grau de dificuldade ou facilidade de determinas requicições.
de ante mão obrigado pela ajuda.


Guibes

Guibes

Curtidas 0

Respostas

Massuda

Massuda

16/11/2004

Acho que podemos dividir isso em dois problemas:
[list:a954beb705][*:a954beb705]como listar os arquivos *.txt em um determinado diretório e[*:a954beb705]como importar cada arquivo para o BD[/list:u:a954beb705]O primeiro problema você resolve usando as funções FindFirst, FindNext e FindClose disponíveis em SysUtils. Agora, a segunda questão fica em aberto, pois depende do conteúdo dos arquivos e do seu banco de dados.


GOSTEI 0
Lucasnishimura

Lucasnishimura

16/11/2004

realmente teria de saber se eh um arquivo tabulado, serparado por virgula..

Fiz um para o arquivo de conciliacao do hsbc q solta extratos
soh que la a posicao dos campos eh fixa...


GOSTEI 0
Cpd_arim

Cpd_arim

16/11/2004

1 vc precisa criar o banco
2 vc importa o txt para o banco
e isso que vc deseja?


GOSTEI 0
Cpd_arim

Cpd_arim

16/11/2004

procedure Testoque1.Button1Click(Sender: TObject);
var
txt : textfile;
entrada : string;
begin
Assignfile(txt,´c:\seuarquivotexto.txt´);\\o diretorio e o nome do seu txt
reset(txt);
while not eoln(txt) do
begin
readln(txt,entrada);
table1.insert;
table1filcod.Value:=copy(entrada,01,02);\\aqui o ,01 a coluna onde começa e o 02 o tamanho
table1codpec.Value:=copy(entrada,03,22);\\ex inicia na coluna 1 e tamanho 2
table1sitpec.Value:=copy(entrada,25,03);
table1codcla.Value:=copy(entrada,28,22);
table1qtdest.Value:=copy(entrada,50,07);
table1qtdand.Value:=copy(entrada,57,07);
table1qtddef.Value:=copy(entrada,64,07);
table1cusatu.Value:=copy(entrada,71,14);
table1cuscon.value:=copy(entrada,89,14);
table1cusicm.Value:=copy(entrada,107,11);
table1cusmoe.Value:=copy(entrada,125,11);
table1cusrep.Value:=copy(entrada,143,11);
table1atuand.Value:=copy(entrada,161,11);
table1conand.Value:=copy(entrada,179,11);
table1icmand.Value:=copy(entrada,197,11);
table1moeand.Value:=copy(entrada,215,11);
table1repand.Value:=copy(entrada,233,11);
table1prient.Value:=copy(entrada,251,08);
table1ultent.Value:=copy(entrada,259,08);
table1ultsai.Value:=copy(entrada,267,08);
table1ultaju.Value:=copy(entrada,275,08);
table1ultinv.Value:=copy(entrada,283,08);
table1ultcus.Value:=copy(entrada,291,08);
table1ultpre.Value:=copy(entrada,299,11);
table1girtot.Value:=copy(entrada,312,05);
table1girbru.Value:=copy(entrada,317,05);
table1girver.Value:=copy(entrada,322,05);
table1.Refresh;
end;
closefile(TXT);
Table1.First;
ProgressBar1.Max := Table1.RecordCount;
for i := 1 to Table1.RecordCount do
begin
Table1.Next;
ProgressBar1.Position := i;
end;
ProgressBar1.Position := 0;
end;

qualquer duvida envie um email cpd_arim@hotmail.com


GOSTEI 0
POSTAR