Veriler Excel'den SQL Server'a nasıl alınır

Makale çevirileri Makale çevirileri
Makale numarası: 321686 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu adım adım makalede, çeşitli yöntemler kullanılarak verilerin Microsoft Excel çalışma sayfalarından Microsoft SQL Server veritabanlarına nasıl alınacağı gösterilir.

Tekniğin Açıklaması

Bu makaledeki örneklerde Excel verileri şu araçlarla alınır:
  • SQL Server Veri Dönüştürme Hizmetleri (DTS)
  • Microsoft SQL Server 2005 Tümleştirme Hizmetleri (SSIS)
  • SQL Server bağlantılı sunucuları
  • SQL Server dağıtılmış sorguları
  • ActiveX Veri Nesneleri (ADO) ve SQL Server için Microsoft OLE DB Sağlayıcısı
  • ADO ve Jet 4.0 için Microsoft OLE DB Sağlayıcısı

Gereksinimler

Aşağıdaki listede, gereksinim duyulan donanım, yazılım, ağ altyapısı ve hizmet paketleri önerilmektedir:
  • Microsoft SQL Server 7.0, Microsoft SQL Server 2000 veya Microsoft SQL Server 2005'in kullanılabilir örneği
  • Visual Basic kullanan ADO örnekleri için Microsoft Visual Basic 6.0
Bu makalenin bazı bölümlerinde, aşağıdaki konularda bilgi sahibi olduğunuz varsayılmaktadır:
  • Veri Dönüştürme Hizmetleri
  • Bağlantılı sunucular ve dağıtılmış sorgular
  • Visual Basic'te ADO geliştirme

Örnekler

Alma ile Ekleme Tekniklerinin Karşılaştırması

Bu makalede kullanılan örnek SQL bildirimlerinde, SELECT...INTO...FROM sözdizimini kullanarak Excel verilerini yeni bir SQL Server tablosuna alan Tablo Oluştur sorguları gösterilmektedir. Bu kod örneklerinde gösterildiği gibi kaynak ve hedef nesnelerine başvurmaya devam ederken bu bildirimleri INSERT INTO...SELECT...FROM sözdizimini kullanarak Ekleme sorgularına dönüştürebilirsiniz.

DTS veya SSIS Kullanma

SQL Server Veri Dönüştürme Hizmetleri (DTS) Alma Sihirbazı'nı veya SQL Server Alma ve Verme Sihirbazı'nı kullanarak Excel verilerini SQL Server tablolarına alabilirsiniz. Sihirbazın adımlarını uyguladığınız sırada Excel kaynak tablolarını seçerken, dolar işareti ($) eklenen Excel nesne adlarının çalışma sayfalarını (örneğin, Sayfa1$) ve dolar işareti bulunmayan düz nesne adlarının Excel adlandırılmış aralıklarını gösterdiğini unutmayın.

Bağlantılı Sunucu Kullanma

Sorguları basitleştirmek için, bir Excel çalışma kitabını SQL Server'da bağlantılı sunucu olarak yapılandırabilirsiniz. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
306397 NASIL YAPILIR: Excel'i SQL Server Bağlantılı Sunucuları ve Dağıtılmış Sorgularıyla Kullanma
Aşağıdaki kod, "EXCELLINK" adlı Excel bağlantılı sunucusundaki Customers çalışma sayfasında yer alan verileri XLImport1 adlı yeni bir SQL Server tablosuna alır:
SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]
				
OPENQUERY işlevini aşağıdaki biçimde kullanarak sorguyu kaynak için doğrudan sorgu biçiminde de yürütebilirsiniz:
SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,
    'SELECT * FROM [Customers$]')
				

Dağıtılmış Sorgular Kullanma

Excel çalışma kitabına bir bağlantılı sunucu olarak bir kalıcı bağlantı yapılandırmak istemezseniz, OPENDATASOURCE veya OPENROWSET işlevini kullanarak verileri belirli bir amaçla alabilirsiniz. Aşağıdaki kod örnekleri de verileri Excel Customers çalışma sayfasından yeni SQL Server tablolarına alır:
SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$]

SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', [Customers$])

SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]')
				

ADO ve SQLOLEDB Kullanma

Bir ADO uygulamasında SQL Server için Microsoft OLE DB (SQLOLEDB) kullanarak SQL Server'a bağlandığınızda, Dağıtılmış Sorgular Kullanma bölümünde belirtilen "dağıtılmış sorguyu" kullanarak Excel verilerini SQL Server'a alabilirsiniz.

Aşağıdaki Visual Basic 6.0 kod örneği, ActiveX Veri Nesneleri'ne (ADO) bir proje başvurusu eklemenizi gerektirir. Bu kod örneği ayrıca bir SQLOLEDB bağlantısı üzerinden OPENDATASOURCE ve OPENROWSET işlevlerinin nasıl kullanılacağını gösterir.
    Dim cn As ADODB.Connection
    Dim strSQL As String
    Dim lngRecsAff As Long
    Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _
        "Initial Catalog=<database>;User ID=<user>;Password=<password>"

    'OPENDATASOURCE kullanarak alın.
    strSQL = "SELECT * INTO XLImport6 FROM " & _
        "OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
        "'Data Source=C:\test\xltest.xls;" & _
        "Extended Properties=Excel 8.0')...[Customers$]"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff

    'OPENROWSET ve nesne adı kullanarak alın.
    strSQL = "SELECT * INTO XLImport7 FROM " & _
        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
        "'Excel 8.0;Database=C:\test\xltest.xls', " & _
        "[Customers$])"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff

    'OPENROWSET ve SELECT sorgusu kullanarak alın.
    strSQL = "SELECT * INTO XLImport8 FROM " & _
        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
        "'Excel 8.0;Database=C:\test\xltest.xls', " & _
        "'SELECT * FROM [Customers$]')"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff

    cn.Close
    Set cn = Nothing
				

ADO ve Jet Sağlayıcısı Kullanma

Yukarıdaki bölümde yer alan örnek, ADO ile birlikte SQLOLEDB Sağlayıcısı kullanarak Excel'den SQL sunucusuna alma işleminin hedefine bağlanır. Excel kaynağına bağlanmak için Jet 4.0 için OLE DB Sağlayıcısı'nı da kullanabilirsiniz.

Jet veritabanı altyapısı, üç farklı biçimi olan özel bir sözdizimi kullanarak SQL bildirimlerde dış veritabanlarına başvurabilir:
  • [Microsoft Access veritabanının tam yolu].[Tablo Adı]
  • [ISAM Adı;ISAM Bağlantı Dizesi].[Tablo Adı]
  • [ODBC;ODBC Bağlantı Dizesi].[Tablo Adı]
Bu bölümde, üçüncü biçim kullanılarak hedef SQL Server veritabanına bir ODBC bağlantısı oluşturulur. Bir ODBC Veri Kaynağı Adı (DSN) veya bir DSN-less bağlantı dizesi kullanabilirsiniz:
DSN:
    [odbc;DSN=<DSN name>;UID=<user>;PWD=<password>]

DSN-less:
   [odbc;Driver={SQL Server};Server=<server>;Database=<database>;
       UID=<user>;PWD=<password>]
				
Aşağıdaki Visual Basic 6.0 kod örneği, ADO'ya bir proje başvurusu eklemenizi gerektirir. Bu kod örneği, Excel verilerinin Jet 4.0 Sağlayıcısı kullanılarak bir ADO bağlantısı üzerinden SQL Server'a nasıl alınacağını gösterir.
    Dim cn As ADODB.Connection
    Dim strSQL As String
    Dim lngRecsAff As Long
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=C:\test\xltestt.xls;" & _
        "Extended Properties=Excel 8.0"
    
    'Jet Sağlayıcısı'nı kullanarak alın.
    strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _
        "Server=<server>;Database=<database>;" & _
        "UID=<user>;PWD=<password>].XLImport9 " & _
        "FROM [Customers$]"
    Debug.Print strSQL
    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
    Debug.Print "Records affected: " & lngRecsAff
        
    cn.Close
    Set cn = Nothing
				
Excel verilerini başka Microsoft Access veritabanlarına, dizin oluşturulmuş sıralı erişim yöntemi (ISAM) ("masaüstü") veritabanlarına veya ODBC veritabanlarına almak için, Jet Sağlayıcısı'nın desteklediği bu sözdizimini de kullanabilirsiniz.

Sorun Giderme

  • Dolar işareti ($) eklenen Excel nesne adlarının çalışma sayfalarını (örneğin, Sayfa1$) ve düz nesne adlarının Excel adlandırılmış aralıklarını gösterdiğini unutmayın.
  • Bazı durumlarda, özellikle de Excel kaynak verilerini bir SELECT sorgusu yerine tablo adı kullanarak atadığınızda, hedef SQL Server tablosundaki sütunlar alfabetik sırayla yeniden düzenlenir.Jet Sağlayıcısı ile ilgili bu sorun hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    299484 SORUN: ADOX Kullanarak Access Tablosunun Sütunlarını Aldığınızda Sütunlar Alfabetik Olarak Sıralanıyor
  • Jet Sağlayıcısı bir Excel sütununun metin ve sayısal verileri bir arada içerdiğini belirlediğinde, "çoğunluk" veri türünü seçer ve eşleşmeyen değerleri BOŞ olarak döndürür.Bu soruna geçici bir çözüm bulma hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    194124 SORUN: DAO OpenRecordset Yöntemi Kullanıldığında Excel Değerleri BOŞ Olarak Döndürülüyor

Referanslar

Excel'i veri kaynağı olarak kullanma hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
257819 NASIL YAPILIR: ADO'yu Visual Basic veya VBA'daki Excel Verileriyle Kullanma
Verileri Excel'e aktarma hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
295646 NASIL YAPILIR: ADO Veri Kaynağındaki Verileri ADO ile Excel'e Aktarma
247412 BİLGİ: Visual Basic Verilerini Excel'e Aktarma Yöntemleri
246335 NASIL YAPILIR: ADO Kayıt Kümesindeki Verileri Otomasyon ile Excel'e Aktarma
319951 NASIL YAPILIR: Verileri SQL Server Veri Dönüştürme Hizmetleri Kullanarak Excel'e Aktarma
306125 NASIL YAPILIR: SQL Server'daki Verileri Microsoft Excel'e Alma
Not Bu, doğrudan Microsoft destek kuruluşu tarafından oluşturulan bir “FAST PUBLISH” makalesidir. Buradaki bilgiler, ortaya çıkan sorunları gidermek üzere olduğu gibi sağlanmaktadır. Mümkün olduğu kadar hızlı sunulmasının bir sonucu olarak malzemelerde yazım hataları bulunabilir ve bunlar bildirimde bulunulmadan daha sonra düzeltilebilir. Diğer hususlar için Kullanım Koşulları’na bakın.

Özellikler

Makale numarası: 321686 - Last Review: 29 Mart 2013 Cuma - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Workgroup
Anahtar Kelimeler: 
kbhowtomaster kbjet KB321686

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com