Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Cách nhập dữ liệu từ Excel vào SQL Server

Tóm tắt
Bài viết từng bước này giải thích cách nhập dữ liệu từ trang tính Microsoft Excel vào cơ sở dữ liệu Microsoft SQL Server bằng cách sử dụng nhiều phương pháp.

quay lại đầu trang

Mô tả Phương pháp

Các mẫu trong bài viết này nhập dữ liệu Excel bằng cách sử dụng:
  • Dịch vụ Chuyển đổi Dữ liệu (DTS) SQL Server
  • Dịch vụ Tích hợp Microsoft SQL Server 2005 (SSIS)
  • Máy chủ liên kết SQL Server
  • Truy vấn phân phối SQL Server
  • Đối tượng Dữ liệu ActiveX (ADO) và Microsoft OLE DB Provider cho SQL Server
  • ADO và Microsoft OLE DB Provider cho Jet 4.0
quay lại đầu trang

Yêu cầu

Danh sách bên dưới đưa ra phần cứng, phần mềm, hạ tầng mạng và gói dịch vụ được khuyến nghị mà bạn cần:
  • Phiên bản có sẵn của Microsoft SQL Server 7.0 hoặc Microsoft SQL Server 2000 hoặc Microsoft SQL Server 2005
  • Microsoft Visual Basic 6.0 cho các mẫu ADO sử dụng Visual Basic
Các phần trong bài viết này giả định rằng bạn đã quen với các chủ đề sau:
  • Dịch vụ Chuyển đổi Dữ liệu
  • Các máy chủ được liên kết và các truy vấn được phân tán
  • Phát triển ADO trong Visual Basic
quay lại đầu trang

Mẫu

Nhập và Thêm

Lệnh SQL mẫu được sử dụng trong bài viết này giải thích truy vấn Tạo Bảng nhập dữ liệu Excel vào bảng SQL Server mới bằng cách sử dụng cú pháp CHỌN...VÀO...TỪ. Bạn có thể chuyển các lệnh này thành truy vấn Thêm bằng cách sử dụng cú pháp CHÈN VÀO...CHỌN...TỪ khi bạn tiếp tục tham chiếu đối tượng nguồn và đích như được hiển thị trong các ví dụ về mã sau.

quay lại đầu trang

Sử dụng DTS hoặc SSIS

Bạn có thể sử dụng Thuật sỹ Nhập của Dịch vụ Chuyển đổi Dữ liệu (DTS) SQL Server hoặc Thuật sỹ Nhập và Xuất SQL Server để nhập dữ liệu Excel vào bảng SQL Server. Khi bạn xem thuật sỹ và chọn bảng nguồn Excel, hãy nhớ rằng tên đối tượng Excel được nối bằng ký hiệu đô la ($) đại diện cho trang tính (ví dụ: Sheet1 $) và tên đối tượng thuần mà không có ký hiệu đô la đại diện cho dải ô được đặt tên trong Excel.

quay lại đầu trang

Sử dụng Máy chủ Liên kết

Để đơn giản truy vấn, bạn có thể cấu hình sổ làm việc Excel làm máy chủ được liên kết trong SQL Server.Để biết thêm thông tin, hãy bấm vào số bài viết bên dưới để xem bài viết trong Cơ sở Kiến thức Microsoft:
306397 CÁCH THỰC HIỆN: Sử dụng Excel với Máy chủ Liên kết SQL Server và Truy vấn Phân phối
Mã sau nhập dữ liệu từ trang tính Khách hàng trên máy chủ liên kết Excel "EXCELLINK" vào bảng SQL Server mới có tên XLImport1:
CHỌN * INTO XLImport1 TỪ EXCELLINK...[Customers$]				
Bạn cũng có thể thực thi truy vấn dựa trên nguồn theo cách thông qua bằng cách sử dụng OPENQUERY như sau:
CHỌN * INTO XLImport2 TỪ OPENQUERY(EXCELLINK,    'CHỌN * TỪ [Customers$]')				
quay lại đầu trang

Sử dụng Truy vấn Phân phối

Nếu bạn không muốn cấu hình kết nối ổn định với sổ làm việc Excel làm máy chủ liên kết, bạn có thể nhập dữ liệu cho mục đích cụ thể bằng cách sử dụng chức năng OPENDATASOURCE hoặc OPENROWSET. Ví dụ về mã sau cũng nhập dữ liệu từ trang tính Khách hàng của Excel vào bảng SQL Server mới:
CHỌN * VÀO XLImport3 TỪ OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$]CHỌN * VÀO XLImport4 TỪ OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\test\xltest.xls', [Customers$])CHỌN * VÀO XLImport5 TỪ OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]')				
quay lại đầu trang

Sử dụng ADO và SQLOLEDB

Khi bạn được kết nối với SQL Server trong ứng dụng ADO bằng cách sử dụng Microsoft OLE DB cho SQL Server (SQLOLEDB), bạn có thể sử dụng cùng một cú pháp "truy vấn phân phối" từ phần Sử dụng Truy vấn Phân phối để nhập dữ liệu Excel vào SQL Server.

Ví dụ về mã Visual Basic 6.0 sau đây yêu cầu bạn thêm tham chiếu đối tượng vào Đối tượng Dữ liệu ActiveX (ADO). Ví dụ về mã này cũng giải thích cách sử dụng OPENDATASOURCE và OPENROWSET qua kết nối SQLOLEDB.
    Dim cn As ADODB.Connection    Dim strSQL As String    Dim lngRecsAff As Long    Đặt cn = New ADODB.Connection    cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _        "Initial Catalog=<database>;User ID=<user>;Password=<password>"    'Nhập bằng cách sử dụng 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    'Nhập bằng cách sử dụng OPENROWSET và tên đối tượng.    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    'Nhập bằng cách sử dụng truy vấn OPENROWSET và SELECT.    strSQL = "SELECT * INTO XLImport8 FROM " & _        "OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _        "'Excel 8.0;Database=C:\test\xltest.xls', " & _        "'CHỌN * TỪ [Customers$]')"    Debug.Print strSQL    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords    Debug.Print "Records affected: " & lngRecsAff    cn.Close    Đặt cn = Không				
quay lại đầu trang

Sử dụng ADO và Jet Provider

Ví dụ trong phần trước sử dụng ADO với Nhà cung cấp dịch vụ SQLOLEDB để kết nối với đích trong dữ liệu nhập từ Excel đến SQL của bạn. Bạn cũng có thể sử dụng OLE DB Provider cho Jet 4.0 để kết nối với nguồn Excel.

Công cụ cơ sở dữ liệu Jet có thể tham chiếu cơ sở dữ liệu mở rộng trong lệnh SQL bằng cách sử dụng cú pháp đặc biệt có 3 định dạng khác nhau:
  • [Đường dẫn đầy đủ đến cơ sở dữ liệu Microsoft Access].[Tên Bảng]
  • [Tên ISAM;Chuỗi Kết nối ISAM].[Tên Bảng]
  • [ODBC;Chuỗi Kết nối ODBC].[Tên Bảng]
Phần này sử dụng định dạng thứ 3 để thực hiện kết nối ODBC đến cơ sở dữ liệu SQL Server đích. Bạn có thể sử dụng Tên Nguồn Dữ liệu ODBC (DSN) hoặc chuỗi kết nối không có DSN:
DSN:    [odbc;DSN=<DSN name>;UID=<user>;PWD=<password>]ít DSN hơn:   [odbc;Driver={SQL Server};Server=<server>;Database=<database>;       UID=<user>;PWD=<password>]				
Ví dụ về mã Visual Basic 6.0 sau đây yêu cầu bạn thêm tham chiếu đối tượng vào ADO. Ví dụ về mã này giải thích cách nhập dữ liệu Excel vào SQL Server qua kết nối ADO bằng cách sử dụng Jet 4.0 Provider.
    Dim cn As ADODB.Connection    Dim strSQL As String    Dim lngRecsAff As Long    Đặt cn = New ADODB.Connection    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _        "Data Source=C:\test\xltestt.xls;" & _        "Extended Properties=Excel 8.0"        ' Nhập bằng cách sử dụng 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    Đặt cn = Không				
Bạn cũng có thể sử dụng cú pháp này mà Jet Provider hỗ trợ, để nhập dữ liệu Excel vào cơ sở dữ liệu Microsoft Access khác, cơ sở dữ liệu phương pháp truy cập tuần tự được đánh chỉ mục (ISAM) ("máy tính để bàn") hoặc cơ sở dữ liệu ODBC.

quay lại đầu trang

Gỡ rối

  • Hãy nhớ rằng tên đối tượng Excel được ghi cùng với ký hiệu đô la ($) đại diện cho trang tính (ví dụ: Sheet1$) và đối tượng thuần đại diện cho dải ô được đặt tên trong Excel.
  • Trong một số trường hợp, đặc biệt khi bạn chỉ định dữ liệu nguồn Excel bằng cách sử dụng tên bảng thay vì truy vấn CHỌN, các cột trong bảng SQL Server đích được sắp xếp lại theo thứ tự trong bảng chữ cái.Để biết thêm thông tin về cách khắc phục sự cố này với Jet Provider, bấm số bài viết bên dưới để xem bài viết trong Cơ sở Kiến thức Microsoft:
    299484 PRB: Các cột được sắp xếp theo bảng chữ cái khi bạn sử dụng ADOX để truy xuất cột trong bảng truy cập
  • Khi Jet Provider xác định rằng cột Excel chứa văn bản hỗn hợp và dữ liệu số, Jet Provider chọn loại dữ liệu "đa số" và trả về giá trị không phù hợp dưới dạng TRỐNG.Để biết thêm thông tin về cách khắc phục sự cố này, hãy bấm vào số bài viết dưới đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
    194124 PRB: Giá trị Excel được trả về dưới dạng TRỐNG bằng cách sử dụng DAO OpenRecordset
quay lại đầu trang
Tham khảo
Để biết thêm thông tin về cách sử dụng Excel làm nguồn dữ liệu, bấm số bài viết dưới đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
257819 CÁCH THỰC HIỆN: Sử dụng ADO với Dữ liệu Excel từ Visual Basic hoặc VBA
Để biết thêm thông tin về cách chuyển dữ liệu vào Excel, bấm số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
295646 CÁCH THỰC HIỆN: Chuyển Dữ liệu từ Nguồn Dữ liệu ADO vào Excel với ADO
247412 THÔNG TIN: Các phương pháp Chuyển Dữ liệu sang Excel từ Visual Basic
246335 CÁCH THỰC HIỆN: Chuyển Dữ liệu từ ADO Recordset sang Excel bằng tính năng Tự động
319951 CÁCH THỨC: Chuyển Dữ liệu sang Excel bằng cách sử dụng Dịch vụ Chuyển Dữ liệu SQL Server
306125 CÁCH THỨC: Nhập Dữ liệu từ SQL Server vào Microsoft Excel
quay lại đầu trang
excel sql ado dts sqloledb jet
Thuộc tính

ID Bài viết: 321686 - Xem lại Lần cuối: 12/02/2013 15:56:00 - Bản sửa đổi: 4.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 Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • kbhowtomaster kbjet KB321686
Phản hồi
cript> m/ms.js'" + "'><\/script>");