Cập nhật hàng loạt SQL từ Excel

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


Vấn đề

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?

Dung dịch

Đú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ều kiện tiên quyết

Đối với tất cả các ví dụ này, vui lòng làm như sau

  • Tải bảng tính Excel [Office 2003] này về để thực hiện các thao tác
  • Để làm theo các ví dụ, hãy nhớ lưu bảng tính Excel vào thư mục có tên C. \MSSQLTips\
  • Xem lại từng trang tính trong tệp Excel để xem các dữ liệu khác nhau
  • Đảm bảo đóng bảng tính Excel trước khi chạy bất kỳ mã nào
  • Xem lại từng lệnh bên dưới trước khi thực hiện chúng trong môi trường của bạn

OPENROWSET Ví dụ

Dưới đây là bốn ví dụ để cho thấy một số tính linh hoạt với lệnh OPENROWSET

CHỌN với mệnh đề THAM GIA và ĐẶT HÀNG THEO

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

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ả

Jeremy Kadlec là Đồng sáng lập, Biên tập viên và Tác giả tại MSSQLTips. com, CTO @ Edgewood Solutions và sáu lần đạt MVP SQL Server.

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ét


Thứ 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

Làm cách nào để cập nhật dữ liệu hàng loạt Excel trong SQL Server?

Tải xuống và cài đặt Phần bổ trợ SQL Spread Excel. Chuyển đến tab SQL Spreads trong Excel và chọn Chế độ thiết kế. Một danh sách các cơ sở dữ liệu sẽ xuất hiện ở bên phải. Chọn cơ sở dữ liệu bạn đang sử dụng và chọn một bảng SQL để cập nhật từ Excel

Làm cách nào để sao chép dữ liệu hàng loạt từ Excel sang SQL?

1. Trong Object Explorer, nhấp chuột phải vào cơ sở dữ liệu/bảng/khung nhìn được yêu cầu và nhấp vào Xuất dữ liệu trên menu lối tắt để gọi trình hướng dẫn xuất . Trên trang đầu tiên, Xuất định dạng, chọn định dạng ưa thích. MS Excel [. xls] hoặc MS Excel 2007 [.

Tôi có thể cập nhật tất cả các hàng trong SQL không?

Chúng tôi có thể cập nhật tất cả các hàng trong cơ sở dữ liệu hoặc một số giá trị với sự trợ giúp của các điều kiện . Bản cập nhật là một từ khóa SQL và nó thuộc Ngôn ngữ thao tác dữ liệu [DML], như tên cho thấy nó được sử dụng để thao tác dữ liệu.

Excel có thể ghi vào cơ sở dữ liệu SQL không?

Kết nối Excel và tải dữ liệu . Trong thanh menu ở đầu trang, chọn tab Dữ liệu, chọn Lấy dữ liệu, chọn Từ Azure, sau đó chọn Từ Cơ sở dữ liệu Azure SQL. To connect Excel to a database in SQL Database, open Excel and then create a new workbook or open an existing Excel workbook. In the menu bar at the top of the page, select the Data tab, select Get Data, select From Azure, and then select From Azure SQL Database.

Chủ Đề