Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Excel'den ADODataSete Aktarılan Verileri Kaydetme
#1
Merhaba,

Excel dosyasındaki verileri TADODataSet 'e aktarıyorum. Yaklaşık 50 bin satır veri var.

Sonra ;
      
    ADODataSet1.First ;

    for i := 1 to ADODataSet1.RecordCount do
     begin
          IBQuery1.SQL.Clear ;
          IBQuery1.Sql.Add('Insert Into TBL_KISILER(TCNO,ADI_SOYADI,BABA_ADI,DOGUM_TARIHI,TELEFON,MAHALLE)');
          IBQuery1.Sql.Add('Values (: PTCNO,: PADI_SOYADI,: PBABA_ADI,: PDOGUM_TARIHI,: PTELEFON,: PMAHALLE)');
          IBQuery1.ParamByName('PTCNO').AsString := ADODataSet1.FieldByName('TCNO').Text ;
          IBQuery1.ParamByName('PADI_SOYADI').AsString := ADODataSet1.FieldByName('ADI_SOYADI').Text ;
          IBQuery1.ParamByName('PBABA_ADI').AsString := ADODataSet1.FieldByName('BABA_ADI').Text ;
          IBQuery1.ParamByName('PDOGUM_TARIHI').AsString := ADODataSet1.FieldByName('DOGUM_TARIHI').Text ;
          IBQuery1.ParamByName('PTELEFON').AsString := ADODataSet1.FieldByName('TELEFON').Text ;
          IBQuery1.ParamByName('PMAHALLE').AsString := ADODataSet1.FieldByName('MAHALLE').Text ;
          IBQuery1.Prepare ;
          IBQuery1.ExecSQL ;
          ADODataSet1.Next ;
     end ;
kodları ile kayıt sayısı kadar döngü kurup her döngüde TADODataSet ' te aktif satırı ilgili tabloya kaydediyorum fakat 50 bin verinin kayıt işlemi 15-20 dakika kadar bazen daha uzun sürüyor.

Bu kayıt işlemini kısaltmanın bir yolu var mı?

Stored procedure ile bu işlemi veri tabanına yaptırabilir miyiz?
Cevapla
#2
Bu tabloya ait trigger varsa bunu pasif yaparak deneyin. Bir de tek insert sorgusu ile birden fazla satır ekleme imkanı varsa bunu da deneyebilirsiniz. Mesela SQL Server (2008 versiyondan sonra) tek insert ile 1000 satır ekleyebiliyor.
insert into tablo (ad, soyad)
values ('Ali', 'Çetin'),
('Veli', 'Yılmaz'),
('Ahmet', 'Eski'),
('Murat', 'Gezer')
gibi..
Ayrıca kullandığınız veritabanına ait bulkinsert özelliği varsa bu konuda araştırma yapabilirsiniz.
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi