วิธีการนำเข้าข้อมูลจาก Excel ไปยังเซิร์ฟเวอร์ SQL

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 321686 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความทีละขั้นตอนนี้สาธิตวิธีการนำเข้าข้อมูลจากแผ่นงาน Microsoft Excel ในฐานข้อมูล Microsoft SQL Server โดยใช้หลายวิธี

คำอธิบายของเทคนิคที่ใช้

ตัวอย่างในบทความนี้นำเข้าข้อมูล Excel โดยใช้:
  • SQL Server Data Transformation Services (DTS)
  • Microsoft SQL Server 2005 รวมบริการ (SSIS)
  • เซิร์ฟเวอร์ SQL Server ที่เชื่อมโยง
  • แบบสอบถามแบบกระจายของ SQL Server
  • ActiveX Data Objects (ADO) และผู้ให้บริการ Microsoft OLE DB สำหรับ SQL Server
  • ADO และผู้ให้บริการ Microsoft OLE DB สำหรับ Jet 4.0

ความต้องการ

รายการต่อไปนี้แสดงรูปแบบที่แนะนำสำหรับฮาร์ดแวร์ ซอฟต์แวร์ โครงสร้างเครือข่าย และเซอร์วิสแพ็คที่จำเป็น:
  • มีอินสแตนซ์ของ Microsoft SQL Server 7.0 หรือ Microsoft SQL Server 2000 หรือ Microsoft SQL Server 2005
  • Microsoft Visual Basic 6.0 สำหรับตัวอย่างของ ADO ที่ใช้ Visual Basic
บางส่วนของบทความนี้อนุมานว่า คุณคุ้นเคยกับหัวข้อต่อไปนี้:
  • บริการการแปลงข้อมูล
  • เซิร์ฟเวอร์ที่ถูกเชื่อมโยงและแบบสอบถามแบบกระจาย
  • ADO พัฒนาใน Visual Basic

ตัวอย่าง

นำเข้าเปรียบเทียบกับการใช้ผนวกข้อมูล

สร้างตารางแบบสอบถามที่นำเข้าข้อมูล Excel ไปยังตาราง SQL Server ใหม่ โดยใช้การเลือก คำสั่ง SQL ของตัวอย่างที่ใช้ในบทความนี้แสดงให้เห็นถึง...ลงใน...จากไวยากรณ์ คุณสามารถแปลงคำสั่งเหล่านี้เป็นแบบสอบถามแบบใช้ผนวกข้อมูล โดยใช้การแทรกลงใน...เลือก...จากไวยากรณ์ในขณะที่คุณดำเนินต่อการอ้างอิงวัตถุต้นทางและปลายทางดังแสดงในตัวอย่างรหัสเหล่านี้

ใช้ DTS หรือ SSIS

คุณสามารถใช้ตัวช่วยสร้างการนำเข้า SQL Server ข้อมูลการแปลงบริการ (DTS) หรือ SQL Server การนำเข้า และส่งออกตัวช่วยสร้างการนำเข้าข้อมูล Excel ไปยังตาราง SQL Server เมื่อคุณกำลังดำเนินงานผ่านตัวช่วยสร้าง และเลือกในตารางแหล่งข้อมูล Excel จำไว้ว่า ชื่อออบเจ็กต์ Excel ที่จะต่อท้าย ด้วยเครื่องหมายดอลลาร์ ($) แสดงแผ่นงาน (ตัวอย่างเช่น Sheet1$), และว่า Excel แสดงชื่อวัตถุแบบธรรมดา โดยไม่มีเครื่องหมายดอลลาร์ช่วงที่มีชื่อ

ใช้เซิร์ฟเวอร์ที่ถูกเชื่อมโยง

เมื่อต้องการทำแบบสอบถาม คุณสามารถกำหนดค่าสมุดงาน Excel เป็นเซิร์ฟเวอร์ที่ถูกเชื่อมโยงใน SQL Serverสำหรับข้อมูลเพิ่มเติม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
306397 HOWTO: เซิร์ฟเวอร์เชื่อมโยง Excel ใช้กับ SQL Server และแจกจ่ายแบบสอบถาม
รหัสต่อไปนี้นำเข้าข้อมูลจากแผ่นงานบนเซิร์ฟเวอร์การเชื่อมโยง Excel "EXCELLINK" ไปยังตาราง SQL Server ใหม่ XLImport1 ที่มีชื่อลูกค้า:
SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]
				
คุณสามารถรันแบบสอบถามเทียบกับแหล่งมาในลักษณะพาส โดยใช้ OPENQUERY ดังนี้:
SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,
    'SELECT * FROM [Customers$]')
				

ใช้แบบสอบถามแบบกระจาย

ถ้าคุณไม่ต้องการกำหนดค่าการเชื่อมต่อแบบถาวรไปยังสมุดงาน Excel เป็นเซิร์ฟเวอร์ที่ถูกเชื่อมโยง คุณสามารถนำเข้าข้อมูลสำหรับวัตถุประสงค์เฉพาะ โดยการใช้แบบการสหรือฟังก์ชัน OPENROWSET ตัวอย่างรหัสต่อไปนี้จะนำเข้าข้อมูลจากแผ่นงาน Excel ลูกค้าลงในตาราง SQL Server ใหม่:
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 และ SQLOLEDB

เมื่อคุณเชื่อมต่อกับ SQL Server ในโปรแกรมประยุกต์ ADO โดยใช้ Microsoft OLE DB สำหรับ SQL Server (SQLOLEDB), คุณสามารถใช้ไวยากรณ์เหมือนกับ "แบบสอบถามแบบกระจาย" จาก โดยใช้แบบสอบถามแบบกระจาย ส่วนการนำเข้าข้อมูล Excel ใน SQL Server

ตัวอย่างโค้ด Visual Basic 6.0 ต่อไปนี้จำเป็นต้องให้คุณเพิ่มการอ้างอิงโครงการการ ActiveX Data Objects (ADO) นอกจากนี้โค้ดตัวอย่างนี้แสดงตัวอย่างวิธีการใช้การสและ OPENROWSET ผ่านการเชื่อมต่อ 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
				

ใช้ ADO และตัวให้บริการ Jet

ตัวอย่างในส่วนก่อนหน้านี้ใช้ ADO กับผู้ให้บริการ SQLOLEDB เพื่อเชื่อมต่อไปยังปลายทางของการนำเข้า Excel-SQL คุณยังสามารถใช้ตัวให้บริการ OLE DB สำหรับ Jet 4.0 เพื่อเชื่อมต่อไปยังแหล่งข้อมูลใน Excel

Jet database engine สามารถอ้างอิงฐานข้อมูลภายนอกในคำสั่ง SQL โดยใช้ไวยากรณ์แบบพิเศษที่มีรูปแบบแตกต่างกันสาม:
  • [เส้นทางแบบเต็มไปยังฐานข้อมูล Microsoft Access].[ชื่อตาราง]
  • [ชื่อ ISAM;สตริงการเชื่อมต่อ ISAM].[ชื่อตาราง]
  • [ODBCสายอักขระเชื่อมต่อ ODBC].[ชื่อตาราง]
ส่วนนี้ใช้รูปแบบที่สามเพื่อทำให้การเชื่อมต่อ ODBC ไปยังฐานข้อมูล SQL Server ปลายทาง คุณสามารถใช้การ ODBC ข้อมูลแหล่งชื่อ (DSN) หรือสายอักขระเชื่อมต่อ DSN น้อย:
DSN:
    [odbc;DSN=<DSN name>;UID=<user>;PWD=<password>]

DSN-less:
   [odbc;Driver={SQL Server};Server=<server>;Database=<database>;
       UID=<user>;PWD=<password>]
				
ตัวอย่างโค้ด Visual Basic 6.0 ต่อไปนี้จำเป็นต้องให้คุณเพิ่มข้อมูลอ้างอิงโครงการ ADO โค้ดตัวอย่างนี้สาธิตวิธีการนำเข้าข้อมูล Excel ไปยัง SQL Server บนการเชื่อมต่อ ADO โดยใช้ผู้ให้บริการ Jet 4.0
    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
				
คุณยังสามารถใช้ไวยากรณ์นี้ ซึ่งตัวให้บริการ Jet สนับสนุน การนำเข้าข้อมูล Excel ลงในอื่น ๆ ฐานข้อมูล Microsoft Access เป็นดัชนีตามลำดับวิธี (ISAM) ("เดสก์ท็อป") ฐานข้อมูล access หรือฐานข้อมูล ODBC

การแก้ไขปัญหา

  • โปรดจำไว้ว่า ชื่อออบเจ็กต์ Excel ที่จะต่อท้าย ด้วยเครื่องหมายดอลลาร์ ($) แสดงแผ่นงาน (ตัวอย่างเช่น Sheet1$) และให้ ชื่อออบเจ็กต์แบบธรรมดาแทน Excel ตั้งชื่อช่วง
  • ในบางสถานการณ์ โดยเฉพาะอย่างยิ่งเมื่อคุณกำหนดแหล่งข้อมูล Excel โดยใช้ชื่อตารางแทนที่เป็นแบบสอบถามที่เลือก คอลัมน์ในตาราง SQL Server ปลายทางจะถูกจัดเรียงใหม่ได้ตามลำดับตัวอักษรสำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้กับตัวให้บริการ Jet คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
    299484 PRB: คอลัมน์ที่จะเรียงลำดับตามตัวอักษรเมื่อคุณใช้ ADOX เพื่อดึงข้อมูลคอลัมน์ของตารางใน Access
  • เมื่อตัวให้บริการ Jet เป็นตัวกำหนดว่า คอลัมน์ Excel ที่ประกอบด้วยข้อความผสมและข้อมูลตัวเลข ตัวให้บริการ Jet เลือกชนิดข้อมูล "ใหญ่" และส่งกลับค่าที่ตรงกันที่ไม่เป็นค่า Nullสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการหลีกเลี่ยงปัญหานี้ คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
    194124 PRB: ค่า Excel ที่ส่งกลับมาเป็นค่า NULL โดยใช้ DAO OpenRecordset

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการใช้ Excel เป็นแหล่งข้อมูล คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
257819 HOWTO: ใช้ ADO กับข้อมูล Excel จาก Visual Basic หรือ VBA
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการถ่ายโอนข้อมูลไปยัง Excel คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
295646 HOWTO: โอนย้ายข้อมูลจากแหล่งข้อมูล ADO Excel กับ ADO
247412 ข้อมูล: วิธีการถ่ายโอนข้อมูลไปยัง Excel จาก Visual Basic
246335 HOWTO: โอนย้ายข้อมูลจากชุดระเบียน ADO Excel ด้วยระบบอัตโนมัติ
319951 วิธีการ: โอนย้ายข้อมูลไปยัง Excel โดยใช้บริการการแปลงข้อมูล SQL Server
306125 วิธีการ: การนำเข้าข้อมูลจาก SQL Server ไปยัง Microsoft Excel

คุณสมบัติ

หมายเลขบทความ (Article ID): 321686 - รีวิวครั้งสุดท้าย: 3 มีนาคม 2557 - Revision: 6.0
ใช้กับ
  • 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
Keywords: 
kbhowtomaster kbjet kbmt KB321686 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:321686

ให้ข้อเสนอแนะ

 

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