ID Artikel: 321686 - Kajian Terakhir: 01 Desember 2011 - Revisi: 7.0

Cara mengimpor data dari Excel ke SQL Server

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

RINGKASAN

Artikel ini menunjukkan bagaimana untuk mengimpor data dari lembar kerja Microsoft Excel ke Microsoft SQL Server database dengan menggunakan berbagai metode.

Deskripsi teknik

Contoh dalam artikel ini mengimpor Excel data dengan menggunakan:
  • SQL Server Data transformasi layanan (DTS)
  • Microsoft SQL Server 2005 integrasi layanan (SSIS)
  • SQL Server terkait server
  • Query SQL Server didistribusikan
  • Objek ActiveX Data (ADO) dan penyedia DB Microsoft OLE SQL Server
  • ADO dan penyedia DB Microsoft OLE untuk Jet 4.0

Persyaratan

Daftar berikut ini menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang diperlukan:
  • Contoh tersedia dari Microsoft SQL Server 7.0 atau Microsoft SQL Server 2000 atau Microsoft SQL Server 2005
  • Microsoft Visual Basic 6.0 untuk sampel ADO yang menggunakan Visual Basic
Bagian dari artikel ini mengasumsikan bahwa Anda sudah familiar dengan topik-topik berikut:
  • Layanan transformasi data
  • Terkait server dan didistribusikan permintaan
  • ADO pembangunan di Visual Basic

Sampel

Impor vs Append

Pernyataan SQL sampel yang digunakan dalam artikel ini menunjukkan permintaan Create Table yang mengimpor Excel data ke meja SQL Server baru dengan menggunakan pilih...KE...DARI sintaks. Anda dapat mengubah pernyataan-pernyataan ini menambahkan pertanyaan dengan memasukkan ke...PILIH...DARI sintaks sementara Anda terus referensi objek sumber dan tujuan seperti ditunjukkan pada contoh kode ini.

Menggunakan DTS atau SSIS

Anda dapat menggunakan Wisaya impor SQL Server Data transformasi layanan (DTS) atau SQL Server impor dan ekspor Wizard untuk mengimpor Excel data ke tabel SQL Server. Ketika Anda melangkah melalui wizard dan memilih tabel sumber Excel, ingat bahwa nama objek Excel yang ditambahkan dengan tanda dolar ($) mewakili lembar kerja (misalnya, Sheet1$), dan bahwa nama objek biasa tanpa tanda dolar mewakili Excel bernama rentang.

Menggunakan Server terkait

Untuk menyederhanakan pertanyaan, Anda dapat mengkonfigurasi buku kerja Excel sebagai server terkait dalam SQL Server.Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
306397  (http://support.microsoft.com/kb/306397/EN-US/ ) HOWTO: Menggunakan Excel dengan SQL Server terkait server dan didistribusikan Queries
Kode berikut impor data dari lembar kerja pelanggan di Excel terkait server "EXCELLINK" ke dalam tabel SQL Server baru bernama XLImport1:
SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]
				
Anda juga dapat mengeksekusi query terhadap sumber cara passthrough dengan menggunakan OPENQUERY sebagai berikut:
SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,
    'SELECT * FROM [Customers$]')
				

Menggunakan query didistribusikan

Jika Anda tidak ingin mengkonfigurasi sambungan yang tetap ke buku kerja Excel sebagai sebuah server yang terhubung, Anda dapat mengimpor data untuk tujuan tertentu dengan menggunakan OPENDATASOURCE atau fungsi OPENROWSET. Contoh kode berikut juga mengimpor data dari lembar kerja Excel pelanggan ke tabel SQL Server baru:
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$]')
				

Menggunakan ADO dan SQLOLEDB

Bila Anda terhubung ke SQL Server aplikasi BASI dengan menggunakan Microsoft OLE DB untuk SQL Server (SQLOLEDB), Anda dapat menggunakan sintaks "didistribusikan permintaan" yang sama dari Menggunakan query didistribusikan bagian untuk mengimpor Excel data ke SQL Server.

Contoh kode Visual Basic 6.0 berikut memerlukan bahwa Anda menambahkan referensi proyek untuk objek Data ActiveX (ADO). Contoh kode di atas juga menunjukkan bagaimana untuk menggunakan OPENDATASOURCE dan OPENROWSET atas koneksi SQLOLEDB.
    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>"

    'Import by using OPENDATASOURCE.
    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

    'Import by using OPENROWSET and object name.
    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

    'Import by using OPENROWSET and SELECT query.
    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
				

Menggunakan ADO dan penyedia Jet

Sampel di bagian sebelumnya menggunakan ADO penyedia SQLOLEDB untuk menghubungkan ke nomor tujuan Anda impor Excel untuk SQL. Anda juga dapat menggunakan OLE DB penyedia untuk Jet 4.0 untuk terhubung ke sumber Excel.

Jet database engine dapat referensi eksternal database dalam pernyataan SQL menggunakan sintaks khusus yang memiliki tiga format yang berbeda:
  • [Path lengkap to Microsoft Access database].[Nama tabel]
  • [Nama Islam TERPADU;Rangkaian sambungan Islam TERPADU].[Nama tabel]
  • [ODBC;Koneksi ODBC String].[Nama tabel]
Bagian ini menggunakan format ketiga agar ODBC koneksi ke database SQL Server tujuan. Anda dapat menggunakan ODBC Data sumber nama (DSN) atau string DSN-kurang koneksi:
DSN:
    [odbc;DSN=<DSN name>;UID=<user>;PWD=<password>]

DSN-less:
   [odbc;Driver={SQL Server};Server=<server>;Database=<database>;
       UID=<user>;PWD=<password>]
				
Contoh kode Visual Basic 6.0 berikut memerlukan bahwa Anda menambahkan referensi proyek ADO. Contoh kode di atas menunjukkan bagaimana untuk mengimpor Excel data ke SQL Server melalui ADO koneksi dengan menggunakan penyedia 4.0 Jet.
    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"
    
    'Import by using Jet Provider.
    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
				
Anda juga dapat menggunakan sintaks ini, yang mendukung penyedia Jet, untuk mengimpor Excel data ke Microsoft Access database lain, metode (ISAM) diindeks berurutan akses database ("desktop"), atau ODBC database.

Pemecahan masalah

  • Ingat bahwa nama objek Excel yang ditambahkan dengan tanda dolar ($) mewakili lembar kerja (misalnya, Sheet1$) dan bahwa nama objek biasa mewakili Excel yang bernama rentang.
  • Dalam beberapa keadaan, terutama ketika Anda menetapkan Excel sumber data dengan menggunakan nama tabel bukan permintaan pilih kolom dalam tabel SQL Server tujuan rearranged dalam urutan abjad.Untuk informasi tambahan tentang masalah ini dengan penyedia Jet, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
    299484  (http://support.microsoft.com/kb/299484/EN-US/ ) PRB: Kolom diurutkan berdasarkan abjad bila Anda menggunakan ADOX untuk mengambil kolom tabel akses
  • Ketika penyedia Jet menentukan bahwa Excel kolom berisi campuran teks dan data numerik, penyedia Jet memilih tipe data "mayoritas" dan kembali nilai-nilai yang non-pencocokan sebagai NULLs.Untuk informasi tambahan tentang cara mengatasi masalah ini, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
    194124  (http://support.microsoft.com/kb/194124/EN-US/ ) PRB: Nilai-nilai Excel kembali sebagai NULL menggunakan DAO OpenRecordset

REFERENSI

Untuk informasi tambahan tentang cara menggunakan Excel sebagai sumber data, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
257819  (http://support.microsoft.com/kb/257819/EN-US/ ) HOWTO: Menggunakan ADO dengan Data Excel dari Visual Basic atau VBA
Untuk informasi tambahan tentang cara untuk mentransfer data ke Excel, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
295646  (http://support.microsoft.com/kb/295646/EN-US/ ) HOWTO: Transfer Data dari sumber ADO Data Excel dengan ADO
247412  (http://support.microsoft.com/kb/247412/EN-US/ ) INFO: Metode untuk mentransfer Data ke Excel dari Visual Basic
246335  (http://support.microsoft.com/kb/246335/EN-US/ ) HOWTO: Transfer Data dari ADO Recordset ke Excel dengan otomatisasi
319951  (http://support.microsoft.com/kb/319951/EN-US/ ) CARA: Transfer Data ke Excel dengan menggunakan SQL Server Data transformasi layanan
306125  (http://support.microsoft.com/kb/306125/EN-US/ ) CARA: Mengimpor Data dari SQL Server ke Microsoft Excel

Berlaku bagi:
  • 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 Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Kata kunci: 
kbhowtomaster kbjet kbmt KB321686 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:321686  (http://support.microsoft.com/kb/321686/en-us/ )