Toplu içe aktarımda bir satır patlarsa hepsi durmasın
Excel’den toplu veri aktaran bir konsol aracında basit ama işe yarayan bir desen var: her satır ayrı ayrı işleniyor, biri hata verirse diğerleri etkilenmiyor.
Beklenen doğrulama hataları (boş zorunlu alan, yanlış format) ayrı bir istisna tipiyle (SatirAtlaException) yakalanıyor. Ama daha önemlisi, beklenmeyen istisnalar bile tüm işlemi durdurmuyor:
// Beklenmeyen bir hata bile tüm import'u durdurmasın;
// satır atlanır ve raporlanır.
Sonuçta kullanıcı “342 satırdan 338’i aktarıldı, 4’ü şu sebeplerle atlandı” gibi bir rapor görüyor, tek bir bozuk satır yüzünden dosyanın tamamı reddedilmiyor.
İkinci detay: tüm satırlar tek bir veritabanı transaction’ı içinde işleniyor, --dry-run bayrağıyla çalıştırıldığında commit yerine rollback yapılıyor. Yani gerçek dosya üzerinde, gerçek veritabanına hiçbir şey yazmadan “bu dosyayı içe aktarsam ne olurdu” sorusuna cevap alınabiliyor.
Bunu neden önemsiyorum: gerçek dünyadan gelen Excel dosyaları hep beklenmedik bir şey içerir — birleştirilmiş hücre, yanlış tarih formatı, fazladan boşluk. “Ya hep ya hiç” yaklaşımı (tek satır hata verirse tüm dosya reddedilsin) güvenli görünür ama kullanışsızdır, çünkü kullanıcı 400 satırlık dosyada hangi satırın sorunlu olduğunu bulmak zorunda kalır. Satır bazlı hata toleransı + net bir “atlananlar” raporu, aynı güvenliği kullanıcıyı yormadan sağlıyor.