Khi làm việc với tư cách là quản trị viên hoặc nhà phát triển cơ sở dữ liệu SQL Server, bạn không thể sống trong thế giới SQL Server cô lập của mình mà không giao tiếp với các nguồn dữ liệu khác. Ví dụ:hiếm khi có ngày bạn không được yêu cầu nhập dữ liệu từ tệp Excel, Access hoặc CSV vào bảng SQL Server của mình. Hoặc ngược lại, xuất một trong các bảng cơ sở dữ liệu SQL Server của bạn sang tệp bên ngoài để bảng này được sử dụng trong công cụ cơ sở dữ liệu khác hoặc để nhóm tương ứng phân tích ra bên ngoài.
SQL Server cung cấp cho chúng tôi một số phương pháp có thể được sử dụng để xuất bảng cơ sở dữ liệu SQL Server hiện có sang tệp Excel hoặc tệp văn bản và nhập dữ liệu từ nguồn dữ liệu bên ngoài vào bảng cơ sở dữ liệu SQL Server mới hoặc hiện có. Trong bài viết này, chúng tôi sẽ dần dần đề cập đến tất cả các phương pháp này.
Tiện ích BCP
Tiện ích Chương trình Sao chép Hàng loạt, còn được gọi là BCP, là một tiện ích dòng lệnh có thể được sử dụng để nhập số lượng lớn các hàng từ tệp dữ liệu hệ điều hành vào bảng cơ sở dữ liệu SQL Server của bạn hoặc xuất bảng cơ sở dữ liệu SQL Server hiện có sang một hệ điều hành tệp dữ liệu hệ thống.
Cú pháp của công cụ BCP chứa nhiều tùy chọn. Đây là những cái được sử dụng phổ biến nhất:
- Tên của bảng hoặc chế độ xem cơ sở dữ liệu SQL Server - tên này sẽ đóng vai trò là nguồn dữ liệu trong trường hợp quá trình xuất dữ liệu và là đích trong trường hợp quá trình nhập dữ liệu.
- Hướng dữ liệu, trong đó IN cho biết nhập dữ liệu và OUT cho biết xuất dữ liệu.
- Tên của tệp dữ liệu cục bộ sẽ đóng vai trò là nguồn trong trường hợp quá trình nhập dữ liệu và là đích trong trường hợp quá trình xuất dữ liệu.
- Máy chủ -S \ instance - điều này được sử dụng để chỉ định tên phiên bản SQL Server.
- –d - điều này được sử dụng để chỉ định cơ sở dữ liệu có chứa bảng nguồn hoặc bảng đích.
- -T - điều này được sử dụng để chỉ định rằng Xác thực Windows sẽ được sử dụng để kết nối với SQL Server.
- Tên người dùng -U và mật khẩu -P - chúng chỉ định tên người dùng và mật khẩu được sử dụng để kết nối với phiên bản SQL Server.
- Tiện ích Chương trình Sao chép Hàng loạt, còn được gọi là BCP, là một tiện ích dòng lệnh có thể được sử dụng để nhập số lượng lớn các hàng từ tệp dữ liệu hệ điều hành vào bảng cơ sở dữ liệu SQL Server của bạn hoặc xuất bảng cơ sở dữ liệu SQL Server hiện có vào một tệp dữ liệu hệ điều hành. - chúng được sử dụng để chỉ định định dạng cho tệp dữ liệu nguồn hoặc đích và các dấu phân tách được sử dụng trong tệp dữ liệu đó.
Ví dụ:lệnh BCP bên dưới được sử dụng để xuất nội dung của bảng cơ sở dữ liệu Employee_Main ở dạng hàng loạt vào tệp CSV, như sau:
bcp AdventureWorks2016CTP3.dbo.Erantyee_Main out C:\ Test \ Nhân viên.csv -S MININT-QQBE87A -T -c -t, -r \ n
Dữ liệu này sẽ nhanh chóng được sao chép vào tệp CSV, như được hiển thị trong kết quả bên dưới:
Để nhập nội dung của tệp CSV vào bảng cơ sở dữ liệu, lệnh BCP sau có thể được sử dụng để đạt được điều này nhanh chóng trong hàng loạt:
bcp AdventureWorks.dbo.Eosystemee_Main trong C:\ Test \ Nhân viên.csv -S MININT-QQBE87A -T -c -t, -r \ n
Và dữ liệu sẽ được chèn vào bảng cơ sở dữ liệu, như trong kết quả dưới đây:
Bằng cách dành vài phút chuẩn bị các lệnh này với các tùy chọn thích hợp, bạn có thể dễ dàng sử dụng tiện ích BCP để nhập hoặc xuất dữ liệu từ đó sang tệp dữ liệu văn bản.
CHÈN SỐ LƯỢNG LỚN
BULK INSERT T-SQL câu lệnh hoạt động tương tự như BCP IN và được sử dụng để nhập dữ liệu từ tệp dữ liệu mà dịch vụ SQL Server có thể truy cập vào bảng cơ sở dữ liệu SQL Server - tất cả được thực hiện trực tiếp trong SQL Server. Không giống như lệnh BCP IN, câu lệnh BULK INSERT có thể được nhóm với các hoạt động khác trong một giao dịch SQL Server duy nhất đang chạy dưới sự kiểm soát của bạn.
Câu lệnh BULK INSERT T-SQL dưới đây có thể được sử dụng để nhập dữ liệu từ tệp CSV vào bảng cơ sở dữ liệu hiện có, chỉ định cả dấu phân cách cột và hàng, như được hiển thị bên dưới:
BULK INSERT AdventureWorks.dbo.Employee_Main FROM 'C:\Test\Employees.csv' WITH ( FIELDTERMINATOR =',', ROWTERMINATOR ='\n' ); GO
OPENROWSET
Hàm OPENROWSET được sử dụng để kết nối với nguồn dữ liệu bằng cách sử dụng nhà cung cấp kết nối OLEDB và sau đó sử dụng truy vấn T-SQL được chỉ định để truy xuất dữ liệu từ nguồn dữ liệu đó. Các ưu điểm chính của hàm OPENROWSET so với các phương pháp BCP và BULK INSERT là:
- bạn có thể lọc dữ liệu được truy xuất bởi câu lệnh OPENROWSET bằng mệnh đề WHERE
- bạn có thể sử dụng nó trong câu lệnh SELECT để đọc dữ liệu từ nguồn dữ liệu - không chỉ với câu lệnh INSERT
Để sử dụng câu lệnh OPENROWSET, bạn cần bật truy vấn phân tán đặc biệt tùy chọn cấu hình hệ thống trước tiên bằng cách sử dụng tập lệnh bên dưới:
sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO
Sau khi bật tùy chọn cấu hình hệ thống truy vấn phân tán đặc biệt, bạn có thể sử dụng chức năng OPENROWSET để nhập dữ liệu vào bảng cơ sở dữ liệu SQL Server từ tệp CSV với định dạng dữ liệu được xác định trước đó, như được hiển thị trong truy vấn T-SQL bên dưới:
INSERT INTO [AdventureWorks].[dbo].[Employee_Main] ([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber]) SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber] FROM OPENROWSET( BULK 'C:\Test\Employees.csv', FORMATFILE = 'C:\Test\Fmt.xml' ) AS rows;
Máy chủ được Liên kết
Máy chủ liên kết SQL Server là một đối tượng máy chủ được cấu hình để cho phép Công cụ cơ sở dữ liệu SQL Server kết nối với các loại nguồn dữ liệu OLE DB khác nhau bên ngoài phiên bản SQL Server. Máy chủ được liên kết có thể dễ dàng được tạo bằng SQL Server Management Studio hoặc T-SQL Commands, như được hiển thị bên dưới:
Sau khi được tạo, máy chủ được liên kết có thể dễ dàng được sử dụng để truy cập nguồn dữ liệu từ xa và nhập dữ liệu tương ứng vào bảng cơ sở dữ liệu SQL Server như được hiển thị trong truy vấn T-SQL bên dưới:
INSERT INTO [AdventureWorks].[dbo].[Employee_Main] ([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address]) SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address] FROM TEST...Employee_Main$
Trình hướng dẫn Xuất / Nhập SQL Server
Trình hướng dẫn Xuất và Nhập SQL Server cung cấp cho chúng ta một giao diện đơn giản để tạo các gói Dịch vụ Tích hợp Máy chủ SQL có thể được sử dụng ngay hoặc được lưu để sử dụng sau này. Các gói này cho phép nhập và xuất dữ liệu từ nhiều nguồn dữ liệu khác nhau, bắt đầu từ các tệp phẳng đơn giản và kết thúc bằng các công cụ cơ sở dữ liệu phức tạp hơn.
Ví dụ:thuật sĩ Xuất và Nhập có thể được sử dụng để nhập dữ liệu từ nguồn dữ liệu Excel vào bảng cơ sở dữ liệu hiện có. Các bước sau đây mô tả quá trình này:
- Trong Trình khám phá đối tượng của SQL Server Management Studio, nhấp chuột phải vào cơ sở dữ liệu AdventureWorks có chứa bảng mà bạn sẽ ghi dữ liệu. Sau đó, chọn Nhập dữ liệu tùy chọn từ Công việc menu con:
- Trình hướng dẫn Nhập và Xuất SQL Server sẽ được mở. Trong phần Chọn nguồn dữ liệu cửa sổ, chỉ định loại nguồn dữ liệu. Trong ví dụ cụ thể này, chúng tôi sẽ chọn Microsoft Excel và đường dẫn đầy đủ cho tệp Excel mong muốn. Sau khi chỉ định nó, hãy nhấp vào nút Tiếp theo cái nút:
- Trong phần Chọn điểm đến cửa sổ, bạn sẽ được yêu cầu chỉ định loại đích mà dữ liệu nguồn sẽ được ghi. Trong ví dụ của chúng tôi, đó là cơ sở dữ liệu SQL Server. Bạn cũng sẽ được yêu cầu chỉ định tên máy chủ, thông tin đăng nhập và tên của cơ sở dữ liệu chứa bảng đích. Sau khi cung cấp tất cả thông tin này, hãy nhấp vào Tiếp theo tiến hành với:
- Trong Chỉ định Bản sao Bảng hoặc Truy vấn cửa sổ, bạn sẽ có một tùy chọn để sao chép tất cả dữ liệu từ nguồn sang một bảng hiện có hoặc bảng mới, hoặc viết một truy vấn tùy chỉnh để truy xuất một phạm vi dữ liệu cụ thể. Khi điều này được quyết định, hãy nhấp vào nút Tiếp theo cái nút:
- Trong Chọn Bảng Nguồn và Chế độ xem cửa sổ, chỉ định trang tính hoặc bảng nguồn từ nguồn dữ liệu và bảng đích mà dữ liệu nguồn sẽ được ghi vào đó. Bạn sẽ có khả năng xem trước nguồn, kiểm tra ánh xạ của các cột giữa bảng nguồn và bảng đích và chỉ định xem dữ liệu nên được nối vào bảng hiện có hay vào bảng mới được tạo. Nhấp vào Tiếp theo để tiếp tục:
- Trong Gói Lưu và Chạy Window, bạn có tùy chọn lưu gói SSIS được tạo trong Trình hướng dẫn Nhập và Xuất để chạy ngay lập tức hoặc lưu để lập lịch hoặc chạy sau. Nhấp vào Tiếp theo để tiếp tục:
- Trong Hoàn thành trình hướng dẫn , bạn sẽ thấy một bản tóm tắt cho các tùy chọn đã chọn và các cài đặt được cung cấp. Nhấp vào Kết thúc nút để bắt đầu sao chép dữ liệu:
- Sau khi hoàn tất quá trình sao chép, trình hướng dẫn sẽ hiển thị số lượng bản ghi được sao chép vào mỗi bảng. Nếu không có lỗi, bạn có thể nhấp vào nút Đóng nút để đóng cửa sổ: Từ ví dụ trước, bạn có thể dễ dàng sử dụng trình hướng dẫn Nhập và Xuất để sao chép dữ liệu giữa các loại khác nhau nguồn và đích dữ liệu, mà không xem xét mối quan hệ giữa các bảng. Nếu bảng có ràng buộc Khoá ngoại tham chiếu đến một trong các cột của bảng mẹ, bạn cần quản lý thứ tự của quá trình sao chép dữ liệu theo cách thủ công. Ngoài ra, để bắt đầu quy trình nhập dữ liệu mới, bạn cần phải đóng trình hướng dẫn và mở lại.
dbForge Data Pump
dbForge Data Pump là một công cụ của bên thứ ba được bao gồm trong SQL Server Management Studio như một phần bổ trợ. Nó có thể được sử dụng để dễ dàng di chuyển dữ liệu giữa SQL Server và các nguồn dữ liệu bên ngoài khác nhau. Nó cho phép bạn nhập và xuất từ hơn 10 định dạng dữ liệu thường được sử dụng (Văn bản, MS Excel, XML, CSV, JSON, v.v.) với một số tùy chọn và mẫu nâng cao có thể được sử dụng cho các tình huống lặp lại.
Sau khi tải xuống dbForge Data Pump từ trang tải xuống Devart, bạn sẽ cần cài đặt nó vào máy như một phần bổ trợ công cụ SSMS, như hình dưới đây:
Xuất dữ liệu
dbForge Data Pump có thể được sử dụng trong SSMS để xuất dữ liệu từ bảng cơ sở dữ liệu SQL Server hoặc để xem dữ liệu ở 13 loại định dạng được hỗ trợ bao gồm HTML, Text, MS Excel, MS Excel 2007, MS Access, RTF, PDF, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7), SQL và JSON.
Để xuất dữ liệu từ một bảng SQL Server cụ thể, hãy làm theo các bước bên dưới:
- Kết nối với phiên bản SQL Server thông qua SSMS. Từ Trình khám phá đối tượng, nhấp chuột phải vào cơ sở dữ liệu có chứa bảng nguồn và chọn Xuất dữ liệu từ Máy bơm dữ liệu menu con:
- Trong Định dạng Xuất cửa sổ, chọn định dạng của tệp mà dữ liệu bảng nguồn sẽ được xuất hoặc tải mẫu đã lưu trước đó. Trong ví dụ của chúng tôi, chúng tôi sẽ chọn MS Excel 2007. Nhấp vào Tiếp theo để tiếp tục:
- Trong cửa sổ Nguồn, hãy xem lại chi tiết kết nối và chọn (các) bảng chứa dữ liệu nguồn sẽ được xuất. Nhấp vào Tiếp theo tiến hành với:
- Trong Tùy chọn cửa sổ, kiểm tra và đặt các tùy chọn có thể tùy chỉnh khác nhau cho lưới bảng của dữ liệu đã xuất. Sau đó, nhấp vào Tiếp theo tiến hành với:
- Trong Định dạng Dữ liệu cửa sổ, trong Cột , chọn các cột sẽ được xuất và xem lại các loại dữ liệu của chúng: Ngoài ra, trong Định dạng , thiết lập định dạng của các kiểu dữ liệu khác nhau cho các cột bạn đã chọn. Nhấp vào Tiếp theo để tiếp tục:
- Trong Cài đặt In trang , bạn có thể đặt các tùy chọn khác nhau cho các trang tệp đã xuất cho mục đích in. Nhấp vào Tiếp theo tiến hành với:
- Trong Hàng đã Xuất cửa sổ, chỉ định một phạm vi hàng sẽ được xuất từ bảng nguồn hoặc chọn xuất tất cả các hàng trong bảng. Nhấp vào Tiếp theo tiến hành với:
- Xử lý lỗi window cung cấp cho bạn một số tùy chọn có thể được sử dụng để chỉ định cách xử lý lỗi nếu chúng xảy ra và nơi ghi kết quả thực thi. Nhấp vào Lưu Mẫu để lưu cài đặt dưới dạng mẫu sẽ được sử dụng trong tương lai hoặc nhấn nút Xuất để bắt đầu quá trình xuất dữ liệu, như được hiển thị bên dưới: Trong quá trình xuất dữ liệu, Data Pump sẽ cung cấp cho bạn các thông báo hiển thị số lượng bản ghi được sao chép từ bảng hiện tại, như được hiển thị bên dưới: Khi quá trình xuất dữ liệu hoàn tất thành công, một bản tóm tắt cho quá trình xuất sẽ được hiển thị. Các tùy chọn sẽ được cung cấp để mở tệp đã tạo hoặc thư mục chứa và xuất nhiều dữ liệu hơn từ cùng một trang mà không cần phải đóng và mở lại công cụ:
Nhập dữ liệu
dbForge Data Pump có thể được sử dụng trong SSMS để nhập dữ liệu vào bảng cơ sở dữ liệu SQL Server. 9 định dạng dữ liệu được sử dụng rộng rãi sau đây được hỗ trợ:Văn bản, MS Excel, MS Excel 2007, MS Access, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7) và JSON.
Để nhập dữ liệu từ một trang tính Excel vào một bảng SQL Server cụ thể, hãy làm theo các bước bên dưới:
- Kết nối với phiên bản SQL Server bằng SSMS. Từ Trình khám phá đối tượng, nhấp chuột phải vào cơ sở dữ liệu có chứa bảng cơ sở dữ liệu đích và chọn Nhập Dữ liệu từ Máy bơm dữ liệu menu con:
- Trong Tệp Nguồn cửa sổ, chọn định dạng của tệp nguồn hoặc chỉ cần tải một mẫu đã lưu trước đó để thực hiện quá trình nhập. Trong ví dụ của chúng tôi, chúng tôi sẽ sử dụng Microsoft Excel 2007 và nhấp vào Duyệt qua để định vị trang tính Excel. Nhấp vào Tiếp theo nút để tiếp tục:
- Ở Điểm đến , xem lại thông tin kết nối và chỉ định liệu dữ liệu nên được nhập vào bảng mới hay bảng hiện có từ danh sách được cung cấp. Nhấp vào Tiếp theo tiến hành với:
- Trong Tùy chọn cửa sổ, bạn có thể đặt các tùy chọn khác nhau chỉ định vị trí của tiêu đề và dữ liệu trong tệp nguồn, với khả năng xem trước dữ liệu tệp nguồn trước khi nhập. Nhấp vào Tiếp theo tiến hành với:
- Trong Định dạng Dữ liệu cửa sổ, bạn có thể điều chỉnh định dạng kiểu dữ liệu cho các cột văn bản khác nhau trong tệp nguồn trước khi nhập nó vào bảng cơ sở dữ liệu. Nhấp vào Tiếp theo tiến hành với:
- Trong Ánh xạ cửa sổ, bạn có thể ánh xạ các cột từ tệp nguồn sang bảng cơ sở dữ liệu đích, với khả năng xem trước dữ liệu sau khi thực hiện thay đổi. Nhấp vào Tiếp theo tiến hành với:
- Trong Chế độ , bạn có thể chỉ định chế độ nhập dữ liệu, chẳng hạn như thêm dữ liệu vào dữ liệu hiện có trong bảng đích và thực hiện chèn hàng loạt hoặc nhập dữ liệu bằng một giao dịch duy nhất. Nhấp vào Tiếp theo tiến hành với:
- Trong Đầu ra cửa sổ, bạn có thể chỉ định để tạo hoặc lưu tập lệnh nhập dữ liệu hoặc tiến hành quá trình nhập dữ liệu ngay lập tức. Nhấp vào Tiếp theo tiến hành với:
- Xử lý lỗi cửa sổ cung cấp cho bạn một số tùy chọn có thể được sử dụng để chỉ định cách xử lý nếu lỗi xảy ra và nơi ghi kết quả thực thi. Nhấp vào Lưu mẫu để lưu cài đặt làm mẫu sẽ được sử dụng trong tương lai hoặc Nhập để bắt đầu quá trình nhập dữ liệu, như được hiển thị bên dưới:
- Khi quá trình nhập hoàn tất thành công, Trình hướng dẫn sẽ hiển thị bản tóm tắt cho số lượng bản ghi đã nhập. Bạn sẽ có khả năng xem lại tệp nhật ký lỗi trong trường hợp có bất kỳ lỗi nào xảy ra và nhập các tệp khác từ cùng một cửa sổ mà không cần phải đóng và mở lại công cụ:
Rõ ràng là từ ví dụ trước rằng công cụ dbForge Data Pump cung cấp cho chúng ta khả năng nhập và xuất dữ liệu đến và từ các định dạng tệp dữ liệu khác nhau. Trình hướng dẫn dành riêng cho việc này rất dễ cấu hình, phong phú với các tùy chọn khác nhau và không cần nỗ lực phát triển. Nó xứng đáng để thử!