28 Şubat 2014 Cuma

SQL Server 'a Excel 'den Veri Aktarma ( Sql import from Excel )

sql_server_import

Adım Adım sql server ' a excel den veri aktarma işlemi.


Bilindiği üzere excel her tür veriyi tablolar içinde tutan veri sayfalarıdır.Fakat veriler arttıkça excel hem hantallaşır hemde kullanımı zorlaşır,Ayrıca verilerin bütünlüğü ve temiz kullanımı açısından belli bir yerden sonra veri tabanı kullanımı kaçınılmaz hale gelir.

Sql Server ' a Excel den veri aktarımı (import) ' işleminin bir çok yöntemi vardır.Bunun en basit yollarından biri Sql server import / export aracını kullanmaktır.

Sql server import aracıyla access,text(txt,csv),excel vs gibi veriler hızlı bir şekilde aktarılabilir.

Gelelim SQL Server 'a Adım Adım  Excel 'den Veri Aktarma İşlemine

Daha önceki sql makalelerimde paylaşmıs oldugum transfermarket adındaki veritabanı üzerine excel den bir futbol takımı verisi aktaracağım.

Elimizde  excel halinde arjantin milli takımının oyuncu bilgileri listesi var olduğunu farzedelim.


sql_import_excel


Başlıklarla birlikte toplam 55 satır kayıt var.Yani biz başlıklar haric 54 tane futbolcu bilgisi aktarmış olacağız.

Sql Server ' ı Açıp aktarım yapmak istediğimiz veritabanı nın üzerine sağ tıklayalım ve Task > Import Data Yolunu takip edelim


sql_veri_aktarma

Karsılama ekranını geçtikten sonra Data Source : Aktarmak istediğimiz veri dosyasının kaynağını seçiyoruz.

First row has column names : kutucugunu işaretlediğimiz zaman exceldeki birinci satırı başlıklar olarak atar.Eğer seçmezseniz Sql server otomatik olarak  her kolonu F1,F2,F3 şeklinde isimlendirir. 
sql_veri_aktarma


Next ' e tıklayıp bir sonraki işleme geçebiliriz.


sql_veri_aktarma
Burada ise import edeceğimiz verinin , import edecileği yeri belirliyoruz.Ardından next diyoruz.


sql_veri_aktarma
Burada ise Istersek sorgulama yontemi kullanabilir istersek de otomatik olarak aktarımı saglamasını seçebiliriz , resimdeki gibi birden fazla veriyi kopyala seçeneğini seçip ilerleyelim.



Burada ise exceldeki verilerin bulundugu sayfaları seçip aktarmak istediğimiz tablonun adını yazıyoruz. Sayfa1$ dolar işareti yerine kendi istediğiniz bir tablo ismi yazın,import işlemini bitiridikten sonra da tabloyu yeniden adlandırabilirsiniz.


sql_veri_aktarma

Run immediately kutusu hali hazırda seçili olarak gelir ve next veya finish diyerek işlemi bitiriz.


sql_veri_aktarma
Sonuc ekranında da 54 tane oyuncu bilgisi istediğimiz tablo veri tabanına aktarılmıs oldugunun bilgisini bize verir.

Son olarak da Sql de test sonucunu paylasarak son durumu gözden geçirmiş olalım.
sql_veri_aktarma

17 yorum:

  1. Yanıtlar
    1. Rica ederim ! blog'uma izleyici olarak katılırsanız sevinirim

      Sil
  2. Hocam bunu yapıyorum da satır sayısı 1 milyon a yakın olunca atmıyor :/

    YanıtlaSil
    Yanıtlar
    1. satır sayısıyla ilgisi olduğunu zannetmiyorum,ne hatası verdiğini incelemen gerekir.En basitinden 1 milyon satırlık bir excel dosyan varsa bunu iki excel dosyasına paylaştırabilir ve o şekilde aktarmayı deneyebilirsin.

      Sil
  3. Hocam 65536 satır alıyor benimse çok excel dosyam var 1er milyon luk

    YanıtlaSil
  4. Şimdi burak kardeşim öncelikle yazdığın yazı çok faydalı bunun için teşekkür ederim. yanlız benim öğrenmek istediğim başka bir şey var. bunun yapılabildiğine inanıyorum. Bu konuda bana yardımcı olursan çok sevinirim. sıkıntımı belirteyim. şimdi sql de bir ogrenci diye vt olsun. bu veritabanında ogrencino ve notu diye iki değer olsun. burada 10 tane ogrenci kayıtlı olsun ogrencino değerleri dolu notu değerleri ise null olsun. elimizde bitanede excel var bunda da iki kolon var burda da ogrencino ve notu kolonu var ogrenciler burda karışık bi durumda ogrencinoları dolu not kolonu da dolu. benim istediğim bu exceldeki veriyi var olan veritabanına sadece notunu aktarma. yani bunu tek tek elle yapmak yerine sorguyu yazalım otomatik olarak notları olsın ogrenci noya göre sql deki ogrenci vt na atsın bunu nasl yapabiliriz ? bu konuda bana yardımcı olursan çok sevinirim. yazılarının başarılarını dilerim.

    YanıtlaSil
    Yanıtlar
    1. Rica ederim,ogrenci isimlerini eşleştirerek , not kısmını güncelleyebilirsin, bunu da join ve update lere çalışarak yapabilirsin.Kolay Gelsin

      Sil
  5. Hocam bilgi için teşekkürler.
    Benim sorum şu: Var olan bir sql tablosuna, exceldeki ilgili kolonları atayarak aktarma yapabilir miyiz? (Yani A1=Isim, A2=Tel gibi...)

    YanıtlaSil
    Yanıtlar
    1. Kardes aradigin bu sanirim ayni islemi ben cok uzun sure aradim sonunda buldum sen de benim gbi oyalanma.

      http://m.youtube.com/watch?v=p11V_S4hEgA

      Sil
  6. teşekkürler;
    var olan bir sql tablosuna , elindeki excel tablosunu aktarabilirsin,excel dosyanı sectıkten sonra aktarmak istediğin tabloyu seçeceksin , select source table and views(6.resim)
    kısmında aktarmak istediğin tabloyu seçebilir ve excel dosyanı aktrabilirsin,örneğin excel deki kolonun TEL sql de ki kolonun TELEFON ise önce edit mappings e tıklayığ ordan kolonları eşleştirmen gerekir aksi takdirde aktarım olmaz.

    YanıtlaSil
  7. Hocam selamlar, bir sorum olucaktı sizlere.
    excell dosyamda 2000 küsür kayır var. değer biçimi nvarchar 255 olan bir sütununda null olan değerlerde var sayısal değerlerde var. Göstermiş olduğunuz şekilde excell'i içeri aktardığımda sayısal rakamları boş geçip tüm satırı null olarak belirtiyor. Daha öncesinde karşılaşmıydınız bu şekilde bir hatayla yardımcı olursanız çok sevinirim.

    hayırlı akşamlar.

    YanıtlaSil
    Yanıtlar
    1. merhaba; bildiğiniz gibi nvarchar hem rakam hem metin ifadelerini bir arada barındırabiliyor.dolayısıyla null görünmesinin sebebi excel'den kaynaklı.Excel hücresini text olarak biçimlendirirsen sorunun çözülür,muhtemelen aktarmak istediğin kolonun general formatında onu hücre biçimlendir den text ' e dönüştür.bu işlemi yaptıktan sonra aktarırsan null olarak aktarmanın önüne geçmiş olursun.

      bloga izleyici olarak katılırsan sevinirim.
      Selamlar

      Sil
  8. bu konu ile alakalı bir video sizdende yardım alarak yaptım. Paylaşımınız için teşekkürler.Güzel bir makale olmuş.
    http://bilalbozduman.blogspot.com.tr/2016/07/sql-tablo-verilerini-exel-ile.html

    YanıtlaSil
    Yanıtlar
    1. Teşekkürler,işinize yaramasına sevindim.İyi çalışmalar

      Sil
  9. TITLE: SQL Server Import and Export Wizard
    ------------------------------

    The operation could not be completed.

    ------------------------------
    ADDITIONAL INFORMATION:

    'Microsoft.ACE.OLEDB.12.0' sağlayıcısı yerel makine kayıtlı değil. (System.Data)

    ------------------------------
    BUTTONS:

    OK
    ------------------------------
    Merhaba hocam ben bu hatayı alıyorum nedeni nedir acaba

    YanıtlaSil
    Yanıtlar
    1. Merhaba , odbc driverlar'ın eksiktir ondan kaynaklıdır muhtemelen,
      SQL Server 'a Excel 'den Sorgu ile Veri Aktarma (Openrowset) yazıma bakarsan orada; Öncelikle veri kaynakları için iki tane indirmeniz gereken dosya var. Diye bir cümle var ve onun altında
      2007 Office System Driver: Data Connectivity Components
      Microsoft Access Database Engine 2010 Redistributable diye iki tane link var,onları indirip kurarsan sorunun çözülür.
      Ayrıca şuna da dikkat etmen de yarar var, sql ve office 'in aynı mimaride olması önemli, ikisininde 64 bit olması gibi.

      Bloga takipçi olarak katılırsan sevinirim
      Kolay gelsin.

      Sil
  10. Hocam SQL ve excel ilişkisi içinde bir sorum olacak irtibat kurabileceğim bir mail adresinizi alabilirmiyim?

    YanıtlaSil

Not: Yalnızca bu blogun üyesi yorum gönderebilir.

//Luckyorange//