1 200 000 satırlık txt dosyasını veri tabanına atma

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

1 200 000 satırlık txt dosyasını veri tabanına atma

Mesaj gönderen hakkus »

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..
saygılar
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
dosyadan okuma ve vt ye yazma işlemlerini nasıl hallettin.
tabloda triger index vs. varmı?
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

Merhabalar,
İlgilenen arkadaşlara teşekkür ederim.
Sorunun program kısmı ayrı o konuda bilgi isteyen olursa paylaşırım..
Sorunu EMS ile çözdüm..
EMS ile txt dosyadan direkt firebird vt ye attım..
20 000 satırlık bir txt dosyayı 4 dk da vt ye attı EMS.
saygılar
algoritma
Üye
Mesajlar: 34
Kayıt: 01 Kas 2005 03:44

Mesaj gönderen algoritma »

hakkus hocam text deli bilgileri nasil firebirde yazdırdım yardımcı olurmusun benimde textde 8 farklı bilgi var bunları 8 alan yazdırmak istiyorum firebirde yardımcı olursan sevinirim
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

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.

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;
Kolay gelsin..
saygılar
algoritma
Üye
Mesajlar: 34
Kayıt: 01 Kas 2005 03:44

Mesaj gönderen algoritma »

hocam ben firebird de tbl_kayit isminde bir tablo yaptim ve adi soyadi alanlari ekledim sonra

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.
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
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
verdiği hata mesajı nedir.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla