Sql Server – Import Data

Merhaba,

Bugün veritabanına Sql Server harici tutulan kayıtların(Şimdilik Excel ve Flat File dosyaları) nasıl import edildiğiyle ilgili bir yazıyı sizlerle paylaşmak istiyorum.
Bildiğiniz gibi büyük sistemlerde kendi şirketiniz haricinde, çalıştığınız diğer kurumlardan size belirli zamanlarda veya periyodik olarak datalar gelir. Gelen bu dataları kendi sisteminizi atıp daha sonra üzerinde gerekli sorgulamalar, işlemler yaparsınız.

Bu datayı kendi ortamınıza alabilmek için hangi veritabanına import edecekseniz o veritabanı üzerinde sağ tıklayarak Tasks >Import Data seçeneğini seçmeniz gerekiyor.

tasks

Aslında buraya kadar olan kısmı veya sonrasını database işlemleriyle ilgili olan hemen hemen herkes biliyordur. Bu yazıyı yazmamdaki asıl amaç karşılaştığım bir problemle ilgili.

Senaryomuz ise şu şekilde;
Size gönderilen Excel dosyası 100000 ve üzeri kayıt içeren bir 2007 veya üzeri versiyona sahip excel dosyası. Bu datayı veritabanına atarken şu şekilde bir hata mesajıyla karşılaşıyorsunuz.

hata

Bu hatanın kaynağı sunucunuzda Microsoft.ACE.OLEDB.12.0 desteğinin bulunmaması. Yani 2007 ve üstü versiyonlarının desteğinin sunucuya yüklenmediğini göstermekte.
Normal şartlarda Sql Server’ın aşağıdaki bütün versiyonları destekliyor;

  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 97-2003
  • Excel 2007 (2007 ve üstü için)

Eğer veritabanının bulunduğu sunucuda Microsoft.ACE.OLEDB.12.0 desteği yoksa 2007 ve üstü versiyonlara ait excel dosyalarını aktaramıyorsunuz. Bu desteğe sahip olmayan sunucularda excel aktarımı için 2 seçeneğiniz oluyor bu durumda.

  • Size gönderilen 2007 ve sonrası Excel dosyasını 97-2003 versiyonuna çevirmeniz gerekiyor. Fakat bilindiği gibi Excel 97-2003 versiyonu 65563 satıra sahip. 100000 gibi 65563 kayıttan büyük dosyaların Excele (97-2003 versiyonuna) çevirmek 65563 satırdan sonraki verilerin kaybına neden olacaktır. (65563 kayıttan az veriler için 97-2003 versiyonuna çevrilmesi daha kolay yöntem.)
  • Gönderilen Excel dosyasını Text dosyası olarak farklı kaydederek bütün satırların eksiksiz olması sağlanır.

saveas

Tabi ki sunucuya Microsoft.ACE.OLEDB.12.0 desteğinin yüklenmesi daha kolay gibi gözükebilir fakat sunucu seviyesinde ve canlı ortamlarda bu değişikliği yapabilmek çok kolay olmuyor.

İkinci senaryoya göre ilerlersek(Excel’i text’e çevirerek) veritabanına import işlemi aşağıdaki resimde görüldüğü şekilde ilerleyebiliriz.

Datasource

1- Data Source: Flat File Source olarak seçilir
2- Browse butonuyla Excelden dönüştürdüğümüz Text File seçilir
3- Columns, Advanced, Preview tablarıyladiğer ayarları yapabiliriz. Colums tabında Counter Delimiter kısmı kolonları oluştururken hangi kritere göre seçeceğini belirtiyor. Biz excel dosyasını text’e çevirirken Tab Delimited olarak çevirdiğimiz için bu alan Tab {t} olarak seçilmelidir.

tabdelimiter

Bu alanlar seçildikten sonra Destination Source bilgileri girip ilerleyerek datanın aktarımı tamamlanır.

Umarım faydalı olur.

Leave a Reply