Merhabalar,
Firebird veri tabanı kullanıyorum.
1 200 000 satırlık (210 mb) text dosyayı satır satır okutup, her satırın belli yerlerinden stringleri alıp veri tabanına yazdırıyorum..
İlk olarak txt dosyayı 50 000 satırlık dosyalara böldüm. İlk 50 000 satırlık dosyayı 40 dk da yazdı.. fakat daha sonraki dosyaları neredeyse 3 saatte yazıyor.
Bunun daha hızlı bir yolu varmı.
Makinamın gücü kuvveti yerinde.. 2 gb ram 200 gb hd..512 mb ekran kartı vs..
Şimdiden teşekkürler..
1 200 000 satırlık txt dosyasını veri tabanına atma
Merhabalar,
OSS den aldığım txt dosyasını satır satır okuttum. Her satırdan gerekli bilgileri field alanlara uygun olarak değişkenlere aktardım dosyaya yazdırdım. Bazı değişkenler gereksiz olabilir sana zahmet onları ayıkla.
Umarım işine yarar.
Kolay gelsin..
OSS den aldığım txt dosyasını satır satır okuttum. Her satırdan gerekli bilgileri field alanlara uygun olarak değişkenlere aktardım dosyaya yazdırdım. Bazı değişkenler gereksiz olabilir sana zahmet onları ayıkla.
Umarım işine yarar.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
F :textfile;
S : string;
UZUN,sayac,ss :integer;
a,aa,bb:integer;
b,satir,dost,tckim:string;
adi,soyadi,okulTur,kayit,OssStr,AOBPstr:string;
OSS_pu,AOBP_pu:real;
Oss1,oss2,oss3,oss4, aobp1,aobp2,aobp3:string;
os1,os2,os3,os4,aop1,aop2,aop3:real;
begin
os1:=0;os2:=0;os3:=0;os4:=0;aop1:=0;aop2:=0;aop3:=0;
OSS_pu:=0;AOBP_pu:=0;
dost:='C:\en_son_oss\oss_sonuc.txt'; // ilgili txt dosya
AssignFile(F, dost);
Reset(F);
while not eof(F) do
begin
readln(F,S);
while pos('.',S)>0 do s[POS('.',S)]:=','; // ondalık ayıracı ayarla
//* field alanlara uygun değişkenler
tckim:=copy(s,0,11);
adi:=copy(S,12,15);
soyadi:=copy(S,42,15);
okulTur:=copy(S,83,4);
kayit:=copy(S,164,1);
aobp1:=copy(S,87,7);aobp2:=copy(S,94,7);aobp3:=copy(S,101,7);
oss1:=copy(S,115,7);oss2:=copy(S,122,7);oss3:=copy(S,129,7);oss4:=copy(S,136,7);
//memo1.Lines.add(tckim+adi+soyadi+okultur+AOBPstr+ossstr+kayit);
table1.insert;
table1Tckimlik.asstring:=tckim;
table1Adi.asstring:=adi;
table1soyadi.asstring:=soyadi;
table1............. // ilgili diğer alanlar
table1.post;
end; // while
closefile(f);
showmessage('B i t t i !');
end;
saygılar
hocam ben firebird de tbl_kayit isminde bir tablo yaptim ve adi soyadi alanlari ekledim sonra
bu kodlari koydum delphi de ıbdatabase ıbtransaction ve ıbtable koydum ilgili baglantilari yaptim ama
IBTABLE1adi.asstring:=adi;
kısmında hata verdi yardımcı olurmusun
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
f: textfile;
s,yol,adi: string;
begin
yol:='c:\downloads\a.txt';//okunacak dosyamızın yolu belirtiliyor
assignfile(f,yol);
reset(f);
while not eof(f) do
begin
readln(f,s);
while pos('.',s)>0 do
s[pos('.',s)]:=',';//ondalık ayırac ayarlanıyor
adi:=copy(s,1,5);
memo1.lines.add(adi);
IBTABLE1.insert;
IBTABLE1adi.asstring:=adi;
IBTABLE1.post;
end;
closefil(f);
showmessage('kayit başarılı');
end;
end.
IBTABLE1adi.asstring:=adi;
kısmında hata verdi yardımcı olurmusun