Chèn, cập nhật hoặc xóa dữ liệu trong SQL Server từ Excel Qua. Jeremy Kadlec. cập nhật. 2008-07-15. Bình luận [11]. Có liên quan. 1. 2. 3. 4. 5. Thêm > Tích hợp Microsoft Excel Tôi đã xem các mẹo trước đây của bạn [Xuất dữ liệu từ SQL Server sang Excel và Các tùy chọn khác nhau để nhập dữ liệu vào SQL Server] liên quan đến làm việc với dữ liệu Excel và SQL Server. Lệnh chính được sử dụng trong một trong các mẹo là OPENROWSET. Điều này có lợi cho chúng tôi vì trong môi trường của chúng tôi vì người dùng doanh nghiệp của chúng tôi cung cấp dữ liệu cho chúng tôi dưới dạng bảng tính Excel. Nhiều tình huống kết thúc bằng việc dịch sang mã INSERT, UPDATE hoặc DELETE trong một hoặc nhiều cơ sở dữ liệu SQL Server của chúng tôi. Chúng tôi luôn tải dữ liệu lên một bảng và sau đó bắt đầu quá trình. Mặc dù quy trình này hoạt động, bạn có quen thuộc với bất kỳ tùy chọn nào khác để trực tiếp thực hiện các thao tác CHÈN, CẬP NHẬT hoặc XÓA không? Đúng - Bạn đã đúng, lệnh OPENROWSET có thể hỗ trợ trực tiếp các thao tác CHÈN, CẬP NHẬT hoặc XÓA như được minh họa trong các mẹo này. Xuất dữ liệu từ SQL Server sang Excel và các tùy chọn khác nhau để nhập dữ liệu vào SQL Server. Ngoài ra, lệnh OPENROWSET cũng có thể hỗ trợ các câu lệnh CHỌN trong đó một bảng được nối với bảng tính Excel. Hãy xem qua một số ví dụ với cơ sở dữ liệu mẫu của SQL Server 2005 AdventureWorks cho mỗi thao tác với một bảng tính Excel mẫu Đối với tất cả các ví dụ này, vui lòng làm như sau Dưới đây là bốn ví dụ để cho thấy một số tính linh hoạt với lệnh OPENROWSET Giải thích mã - Với truy vấn bên dưới, 5 bản ghi sẽ được trả về để hiển thị một câu lệnh INNER JOIN đơn giản có thể trả về một tập hợp kết quả duy nhất từ cả hai dữ liệu trong bảng [[Sales]. [Nhân viên bán hàng]] và bảng tính Excel
Vấn đềđiều kiện tiên quyết
OPENROWSET Ví dụ
CHỌN với mệnh đề THAM GIA và ĐẶT HÀNG THEO
SELECT SP.[SalesPersonID]
,SP.[TerritoryID]
,SP.[SalesQuota]
,SP.[Bonus]
,SP.[CommissionPct]
,SP.[SalesYTD]
,SP.[SalesLastYear]
,SP.[rowguid]
,SP.[ModifiedDate]
,T.[SalesPersonID]
,T.[TerritoryID]
FROM [AdventureWorks].[Sales].[SalesPerson] SP
INNER JOIN OPENROWSET['Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\MSSQLTips\1540_OPENROWSET_Examples.xls;',
'SELECT SalesPersonID, TerritoryID FROM [SELECT_Example$]'] T
ON SP.[SalesPersonID] = T.[SalesPersonID]
AND SP.[TerritoryID] = T.[TerritoryID]
ORDER BY SP.[SalesPersonID], SP.[TerritoryID]
GO�
INSERT với câu lệnh SELECT
Giải thích mã - Với khối mã đầu tiên, năm bản ghi được chèn vào [AdventureWorks]. [Việc bán hàng]. [SalesPerson] bằng cách đọc dữ liệu từ trang tính INSERT_Example của bảng tính Excel. � Trong truy vấn thứ hai, dữ liệu được chèn vào được xác minh
INSERT INTO [AdventureWorks].[Sales].[SalesPerson][SalesPersonID, TerritoryID, SalesQuota, Bonus, CommissionPct, SalesYTD, SalesLastYear, rowguid, ModifiedDate] SELECT SalesPersonID ,TerritoryID ,SalesQuota ,Bonus ,CommissionPct ,SalesYTD ,SalesLastYear ,NEWID[] ,GETDATE[] FROM OPENROWSET['Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\MSSQLTips\1540_OPENROWSET_Examples.xls;', 'SELECT SalesPersonID, TerritoryID, SalesQuota, Bonus, CommissionPct, SalesYTD, SalesLastYear FROM [INSERT_Example$]'] GO SELECT * FROM [AdventureWorks].[Sales].[SalesPerson] WHERE SalesPersonID IN [1, 2, 3, 4, 5] GO
CẬP NHẬT với Tuyên bố THAM GIA
Giải thích mã - Với khối mã đầu tiên, năm bản ghi được cập nhật trong [AdventureWorks]. [Việc bán hàng]. [SalesPerson] bằng cách đọc dữ liệu từ trang tính UPDATE_Example của bảng tính Excel. � Trong truy vấn thứ hai, dữ liệu cập nhật được xác minh
UPDATE SP SET SP.Bonus = T.Bonus FROM [AdventureWorks].[Sales].[SalesPerson] SP INNER JOIN OPENROWSET['Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\MSSQLTips\1540_OPENROWSET_Examples.xls;', 'SELECT SalesPersonID, TerritoryID, SalesQuota, Bonus FROM [UPDATE_Example$]'] T ON SP.SalesPersonID = T.SalesPersonID AND SP.TerritoryID = T.TerritoryID AND SP.SalesQuota = T.SalesQuota GO SELECT * FROM [AdventureWorks].[Sales].[SalesPerson] WHERE SalesPersonID IN [1, 2, 3, 4, 5] GO
XÓA với Tuyên bố THAM GIA
Giải thích mã - Với khối mã đầu tiên, năm bản ghi sẽ bị xóa trong [AdventureWorks]. [Việc bán hàng]. [SalesPerson] bằng cách đọc dữ liệu từ trang tính DELETE_Example của bảng tính Excel. � Trong truy vấn thứ hai, dữ liệu đã xóa được xác minh
DELETE SP FROM [AdventureWorks].[Sales].[SalesPerson] SP INNER JOIN OPENROWSET['Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\MSSQLTips\1540_OPENROWSET_Examples.xls;', 'SELECT SalesPersonID, TerritoryID, SalesQuota, Bonus FROM [UPDATE_Example$]'] T ON SP.SalesPersonID = T.SalesPersonID AND SP.TerritoryID = T.TerritoryID GO SELECT * FROM [AdventureWorks].[Sales].[SalesPerson] WHERE SalesPersonID IN [1, 2, 3, 4, 5] GO
Phân tích chung
Về việc chuyển đổi mã của bạn sang phương pháp mới, tôi chưa gặp phải bất kỳ vấn đề nào về hiệu suất với 1000 bản ghi, nhưng đó dường như là mối quan tâm đầu tiên. Nếu bạn kiểm tra phương pháp và hiệu suất tổng thể không phải là vấn đề, thì hãy xem xét phương pháp. Cũng có thể nhanh hơn để thực hiện một CẬP NHẬT duy nhất như trường hợp của ví dụ trên so với tải lên [CHÈN. CHỌN] dữ liệu và sau đó thực hiện CẬP NHẬT dựa trên bảng mới. Ngoài ra, bằng cách sử dụng các lệnh được liệt kê ở trên so với quy trình hai bước, mã tổng thể có thể sạch hơn một chút. Cân nhắc thứ hai với SQL Server 2005 là cài đặt Cấu hình Diện tích Bề mặt phải được bật để sử dụng mã này trong cả hai trường hợp. Cuối cùng, với một trong hai cách tiếp cận, hãy đảm bảo dọn sạch mọi bảng tính Excel hoặc bảng tạm thời sau khi bạn hoàn thành chúng
Bước tiếp theo- Nếu bạn gặp phải nhu cầu tải dữ liệu dựa trên Excel lên SQL Server, hãy xem xét các mẫu mã trong mẹo này như một tùy chọn để thực hiện việc đó
- Để thay thế cho các lệnh này, bạn cũng có thể xem các mẹo này
- Xuất dữ liệu từ SQL Server sang Excel
- Các tùy chọn khác nhau để nhập dữ liệu vào SQL Server
- Nhập dữ liệu Excel bằng Dịch vụ tích hợp máy chủ SQL [SSIS] và xử lý các vấn đề về dữ liệu unicode và phi unicode
- Mẹo MSSQL. com Thể loại. Dịch vụ tích hợp máy chủ SQL
- Mẹo MSSQL. com Thể loại. Tích hợp Microsoft Office
- Một mục cần lưu ý với bất kỳ quy trình nào là đảm bảo tất cả các tệp, bảng, v.v. hỗ trợ được sắp xếp và/hoặc xóa khi chúng không còn cần thiết
Những bài viết liên quan
Xuất dữ liệu từ SQL Server sang Excel
Nhập dữ liệu unicode của Excel bằng Dịch vụ tích hợp máy chủ SQL
Nhập dữ liệu Excel vào SQL Server bằng cách sao chép và dán
Nhập dữ liệu Excel với Dịch vụ tích hợp máy chủ SQL
Xuất dữ liệu từ SQL Server sang Excel
Nhập dữ liệu Excel vào SQL Server bằng cách sao chép và dán
Báo cáo máy chủ SQL với Microsoft Excel
Sử dụng Máy chủ được Liên kết Máy chủ SQL để Truy vấn Tệp Excel
PowerPivot với Excel 2013
Xây dựng các Chỉ số Hiệu suất Chính [KPI] với PowerPivot
Truyền các giá trị truy vấn động từ Excel sang SQL Server
Trích xuất Danh sách SharePoint bằng Power Query
Gấp truy vấn trong Power Query để cải thiện hiệu suất
Truy xuất kích thước tệp từ hệ thống tệp bằng Power Query
Sử dụng Microsoft Query trong Excel để truy xuất dữ liệu máy chủ SQL
Cách tạo Biểu đồ Burndown trong Excel từ đầu
Đọc tệp Excel trong SQL Server bằng OPENROWSET hoặc OPENDATASOURCE
Tải dữ liệu Excel vào máy chủ SQL
Phân tích kết quả máy chủ SQL trong Excel với định dạng có điều kiện
Sử dụng tham số Excel để tự động xuất dữ liệu máy chủ SQL
Các bài viết phổ biến
Chuyển đổi ngày và giờ bằng SQL Server
Định dạng ngày máy chủ SQL với chức năng FORMAT
SQL Server ÁP DỤNG CHÉO và ÁP DỤNG NGOÀI
Ví dụ về con trỏ máy chủ SQL
SQL Server DROP TABLE IF EXISTS Các ví dụ
Toán tử SQL NOT IN
Cuộn nhiều hàng thành một hàng và cột cho dữ liệu SQL Server
Làm cách nào để biết bạn đang chạy phiên bản SQL Server nào
Giải quyết lỗi không thể mở kết nối với SQL Server
SQL Chuyển đổi ngày thành YYYYMMDD
Cộng và trừ ngày bằng cách sử dụng DATEADD trong SQL Server
Máy chủ SQL lặp qua các hàng của bảng mà không cần con trỏ
Sử dụng MERGE trong SQL Server để chèn, cập nhật và xóa cùng một lúc
Số lượng hàng của máy chủ SQL cho tất cả các bảng trong cơ sở dữ liệu
Cách lấy ngày hiện tại trong SQL Server
Nối các cột Máy chủ SQL thành một Chuỗi với CONCAT[]
Các cách so sánh và tìm sự khác biệt cho các bảng và dữ liệu SQL Server
Định dạng số trong SQL Server
Cơ sở dữ liệu máy chủ SQL bị kẹt trong trạng thái khôi phục
Hiển thị số dòng trong cửa sổ truy vấn SQL Server Management Studio
Thông tin về các Tác giả
Xem tất cả mẹo của tôi
Article Last Updated: 2008-07-15
Nhận xét cho bài viết này
Thêm nhận xétThứ năm, ngày 13 tháng 6 năm 2019 - 3. 39. 55 giờ chiều - Jeremy KadlecQuay lại đầu trang [81459]
YLI,
Hãy tham khảo những lời khuyên này
https. //www. mssqltips. com/sqlservertip/1430/import-excel-data-into-sql-server-using-copy-and-paste/
https. //www. mssqltips. com/sqlservertip/2002/import-excel-data-with-sql-server-integration-services/
https. //www. mssqltips. com/sqlservertip/2770/nhập-dữ-liệu-từ-excel-using-ssis--part-1/
https. //www. mssqltips. com/sqlservertip/2772/importing-data-from-excel-using-ssis--part-2/
HTH
Cảm ơn bạn,
Jeremy Kadlec
Thứ năm, ngày 13 tháng 6 năm 2019 - 2. 17. 27 giờ chiều - YLIQuay lại đầu trang [81458]
Có cách nào để tôi có thể nhập dữ liệu trong Excel và tải trực tiếp vào máy chủ sql không?
Cám ơn rất nhiều
YLI
Thứ năm, 19 Tháng 10, 2017 - 4. 32. 11h - nickQuay Lên Đầu [68539]
Chào Jeremy, bạn có thể đăng một video hướng dẫn không?
Thứ hai, ngày 19 tháng 11 năm 2012 - 8. 21. 11 giờ tối - AryQuay lại đầu trang [20421]
Chào Jeremy, Cảm ơn bạn rất nhiều vì đã cân nhắc giúp đỡ. Tôi hình dung tôi có thể thực hiện điều đó bằng cách sử dụng ADODB.
Đã theo liên kết tại http. // msdn. Microsoft. com/en-us/library/ms807027. aspx
Tôi cũng muốn học cách sử dụng OLEDB. Sau đây là chi tiết Hệ thống SQL của tôi.
Microsoft SQL Server 2008 [RTM] - 10. 0. 1600. 22 [Intel X86] Ngày 9 tháng 7 năm 2008 14. 43. 34 Bản quyền [c] 1988-2008 Tập đoàn Microsoft Phiên bản Doanh nghiệp trên Windows NT 5. 1
Tôi đang sử dụng MS Office 2010 Excel VBA
Thứ hai, ngày 19 tháng 11 năm 2012 - 9. 40. 13 giờ sáng - Jeremy KadlecTrở lại đầu trang [20410]
ary,
Bạn có thể đăng mã gây ra sự cố không?
Bạn đang làm việc trên phiên bản SQL Server, gói dịch vụ và phiên bản SQL Server nào?
Cảm ơn bạn,
Jeremy Kadlec
Chủ Nhật, 18 Tháng 11 2012 - 12. 13. 57 giờ chiều - aryBack To Top [20401]
Tôi đã làm theo các bước trên tuy nhiên tôi gặp lỗi sau
Msg 7399, Cấp 16, Trạng thái 1, Dòng 1
Nhà cung cấp OLE DB "Microsoft. máy bay phản lực. OLEDB. 4. 0" cho máy chủ được liên kết "[null]" đã báo lỗi. Nhà cung cấp không cung cấp bất kỳ thông tin nào về lỗi.
Msg 7303, Mức 16, Trạng thái 1, Dòng 1
Không thể khởi tạo đối tượng nguồn dữ liệu của nhà cung cấp OLE DB "Microsoft. máy bay phản lực. OLEDB. 4. 0" cho máy chủ được liên kết "[null]".
Xin vui lòng giúp đỡ. Tôi đã sử dụng sp_configure để kích hoạt truy vấn từ xa đặc biệt và tự động hóa OLE trong SQL Facets. Cũng đề nghị nếu có
một cách để cập nhật dữ liệu excel bằng cách sử dụng macro vba hoặc cách khác mà không cần phải đăng nhập vào ssms?
Thứ ba, ngày 3 tháng 7 năm 2012 - 12. 25. 17 giờ chiều - richardBack To Top [18324]
Xin chào,
Bạn có thể muốn biết về một cách tiếp cận khác - bạn có thể dùng thử cách này miễn phí - bao gồm các mẫu và xác thực cũng như gửi dữ liệu từ excel tới các thủ tục được lưu trữ cũng như các bảng
Excel vào cơ sở dữ liệu
Cám ơn sự quan tâm của bạn
Thứ bảy, ngày 16 tháng 8 năm 2008 - 8. 53. 36 PM - odeddrorBack To Top [16h45]
vâng tôi đã làm
Thứ hai, ngày 11 tháng 8 năm 2008 - 8. 22. 29 AM - ddnikonBack To Top [1623]
Bạn có mẫu mã bạn đang sử dụng không?
Thứ hai, ngày 11 tháng 8 năm 2008 - 8. 02. 08 AM - odeddrorBack To Top [1622]
Chào bạn,
Tôi không biết nếu đây là đúng nơi nhưng
Tôi đang sử dụng Windows Vista Business x64 SP1 và SQL Server 2005 Devloper x64 SP2
Khi tôi chạy ví dụ này, tôi nhận được [thậm chí tôi đã đặt cấu hình SQL OPENROWSET ON]
Msg 7403, Cấp 16, Trạng thái 1, Dòng 1
Nhà cung cấp OLE DB "Microsoft. máy bay phản lực. OLEDB. 4. 0" chưa được đăng ký
Có lẽ bạn có mẹo về vấn đề này?
Cảm ơn,
Oded Dror
Thứ ba, ngày 29 tháng 7 năm 2008 - 6. 29. 49 PM - ddnikonBack To Top [1526]
Tôi đã mã hóa ví dụ chính xác như được mô tả, bật xp_cmdshell và tải xuống bảng tính Excel. Tuy nhiên, SalesPersonId khác với Id trong bảng, số ID bảng bắt đầu từ những năm 200 [ 268, 275, 276, v.v. ], vì vậy tôi đã treo chúng trên bảng tính. Truy vấn chạy thành công, nhưng không có hàng nào được cập nhật và không thể hiểu tại sao. Bạn có đề nghị nào không? . Thanks cho bất kỳ giúp bạn có thể cung cấp cho. Giảng viên đại học