Trong bài viết này, tôi sẽ giải thích cách chúng ta có thể phân chia và xuất dữ liệu của bảng cơ sở dữ liệu Oracle thành nhiều trang tính của tệp Excel với sự trợ giúp của gói dịch vụ tích hợp SQL Server.
Thông thường, các DBA được yêu cầu tạo báo cáo Ad-Hoc từ cơ sở dữ liệu. Gần đây, tôi đã được yêu cầu tạo một báo cáo từ cơ sở dữ liệu. Họ muốn tôi cung cấp một báo cáo trong nhiều trang tính của một tệp Excel. Có nhiều cách khác nhau để thực hiện nhưng truy vấn này tốn nhiều tài nguyên. Do đó, tôi muốn trích xuất dữ liệu từ cơ sở dữ liệu bằng một lần thực thi và quyết định sử dụng gói dịch vụ tích hợp SQL Server. Công cụ dữ liệu SQL Server có một thành phần được gọi là Chuyển đổi phân tách có điều kiện có thể được sử dụng để đạt được nhiệm vụ.
Sử dụng các công cụ dữ liệu SQL Server, chúng tôi có thể truy xuất dữ liệu từ các nền tảng cơ sở dữ liệu khác nhau bằng cách sử dụng kết nối ODBC. Hầu hết các nền tảng cơ sở dữ liệu đều cung cấp trình điều khiển kết nối có thể được sử dụng để định cấu hình kết nối giữa ứng dụng và cơ sở dữ liệu.
Chuyển đổi phân tách có điều kiện là gì
Phép biến đổi Phân chia có Điều kiện có thể định tuyến các hàng dữ liệu đến các đầu ra khác nhau tùy thuộc vào nội dung của dữ liệu. Việc thực hiện phép chuyển đổi Phân chia có điều kiện giống như cấu trúc quyết định CASE trong ngôn ngữ lập trình. Nó đánh giá các biểu thức và dựa trên kết quả, hướng hàng dữ liệu đến đầu ra được chỉ định. Phép biến đổi này cũng cung cấp một đầu ra mặc định, để nếu một hàng không khớp với biểu thức nào, thì nó sẽ được chuyển hướng đến đầu ra mặc định. ( Tham chiếu MSDN :https://docs.microsoft.com/en-us/sql/integration-services/data-flow/transformations/conditional-split-transformation?view=sql-server-2017).
Thiết lập Demo
Tôi đã cài đặt phiên bản Oracle 11g express trên máy tính của mình. Tôi đã tạo một bảng có tên EMPLOYEESDATA trong HR giản đồ của XE cơ sở dữ liệu và thêm một số bản ghi giả từ AdventureWorks2014 cơ sở dữ liệu.
Đoạn mã dưới đây sẽ tạo một bảng:
TẠO BẢNG "HR". "EMPLOYEE_DATA" ("BusinessEntityID" NUMBER (*, 0), "Title" NVARCHAR2 (8), "FirstName" NVARCHAR2 (50), "MiddleName" NVARCHAR2 (50), "LastName" NVARCHAR2 (50), "Hậu tố" NVARCHAR2 (10), "JobTitle" NVARCHAR2 (50), "PhoneNumber" NVARCHAR2 (25), "PhoneNumberType" NVARCHAR2 (50), "EmailAddress" NVARCHAR2 (50), "EmailPromotion" NUMBER ( *, 0), "AddressLine1" NVARCHAR2 (60), "AddressLine2" NVARCHAR2 (60), "City" NVARCHAR2 (30), "StateProvinceName" NVARCHAR2 (50), "PostalCode" NVARCHAR2 (15), "CountryRegionName" NVARCHAR2 ( 50)) TẠO PHÂN ĐOẠN NGAY LẬP TỨC PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGING LƯU TRỮ (BAN ĐẦU 65536 TIẾP THEO 1048576 PHÚT 1 TỐI ĐA 2147483645 PCTFLINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFACHER) ""Để kết nối cơ sở dữ liệu Oracle bằng SSDT, chúng ta cần cài đặt phần mềm máy khách Oracle. Công cụ dữ liệu SQL Server hoạt động ở chế độ 32 bit, do đó, phiên bản 32 bit của trình điều khiển ODBC cho Oracle phải được cài đặt. Bạn có thể tải xuống Ứng dụng khách Oracle từ đây.
Tôi đã tạo một tệp Excel có tên là ‘ HRData.xls 'Có hai trang tính được gọi là Úc và Canada . Dữ liệu sẽ được phân chia dựa trên giá trị của CountryRegionName cột. Nếu giá trị cột của CountryRegionName cột là Canada sau đó nó sẽ được lưu trữ ở Canada trang tính và nếu giá trị cột của CountryRegionName là Úc sau đó nó sẽ được lưu trữ ở Úc trang tính.
Như tất cả chúng ta đều biết cách tạo gói SSIS, tôi sẽ trực tiếp giải thích cách tạo tác vụ luồng dữ liệu.
Tạo tác vụ luồng dữ liệu
Trong tác vụ Luồng dữ liệu, chúng ta sẽ sử dụng ba thành phần sau:
- Nguồn ADO.NET để điền dữ liệu từ cơ sở dữ liệu Oracle.
- Phân chia có điều kiện để chia dữ liệu thành nhiều tập hợp.
- Đích đến của Excel với hai sổ làm việc có tên là “Úc” và “Canada”.
Định cấu hình Nguồn ADO.NET
Kéo và thả Nguồn ADO.NET từ Hộp công cụ SSIS vào Luồng dữ liệu cửa sổ và đặt tên là Dữ liệu nhân viên như thể hiện trong hình ảnh sau:
Nhấp đúp vào Dữ liệu nhân viên . Trình chỉnh sửa nguồn ADO.NET hộp thoại sẽ mở ra. Ở đây, chúng tôi chưa tạo bất kỳ kết nối nào, do đó trình quản lý kết nối ADO.NET hộp thả xuống trống. Chúng tôi sẽ tạo một kết nối mới. Để làm điều đó, hãy nhấp vào Mới trong hộp thoại đó. Sau đó, một hộp thoại khác, Định cấu hình trình quản lý kết nối, sẽ mở ra như trong hình dưới đây:
Trong Định cấu hình trình quản lý kết nối ADO.NET hộp thoại, nhấp vào Mới . Một hộp thoại khác, Trình quản lý kết nối , sẽ mở.
Theo mặc định, .Net Providers \ SQLClient Data Provider sẽ được chọn trong Nhà cung cấp thả cái hộp xuống. Khi chúng tôi đang điền dữ liệu từ cơ sở dữ liệu Oracle, chúng tôi sẽ chọn Nhà cung cấp dữ liệu OracleClient .
Trong Tên máy chủ hộp văn bản, nhập tên hoặc địa chỉ IP của máy chủ mà Oracle 11g được cài đặt trên đó. Tên người dùng và Mật khẩu sẽ được sử dụng để kết nối cơ sở dữ liệu Oracle. Tôi đã cài đặt Oracle trên máy ảo cục bộ của mình, do đó tên máy chủ sẽ là localhost . Tôi sẽ kết nối cơ sở dữ liệu bằng cách sử dụng HR do đó tên người dùng sẽ là HR . Đã cung cấp mật khẩu thích hợp và nhấp vào OK . Xem hình ảnh sau:
Khi cấu hình hoàn tất, hãy nhấp vào Kiểm tra kết nối để xác minh kết nối với cơ sở dữ liệu và nhấp vào OK.
Chúng tôi đã định cấu hình trình quản lý kết nối ADO.NET, do đó trình quản lý kết nối mặc định sẽ được chọn tự động trong Trình quản lý kết nối ADO.NET hộp danh sách thả xuống. Chúng tôi sẽ truy xuất dữ liệu từ bảng do đó chọn Bảng hoặc Chế độ xem trong hộp thả xuống chế độ truy cập dữ liệu. Tôi đã tạo DỮ LIỆU NHÂN VIÊN trong HR Lược đồ của cơ sở dữ liệu Oracle, do đó hãy chọn HR.EpriseesData trong Tên của bảng hoặc dạng xem hộp thả xuống như được hiển thị trong hình ảnh bên dưới:
Định cấu hình phân chia có điều kiện
Bây giờ, để xuất dữ liệu trong các trang tính Excel khác nhau dựa trên một điều kiện, chúng ta sẽ sử dụng phép biến đổi tách có điều kiện. Kéo thành phần tách có điều kiện khỏi SSIS hộp công cụ cho Luồng dữ liệu cửa sổ như trong hình bên dưới.
Tôi đã đề cập trước đó, kết quả đầu ra của dữ liệu HR.EpriseeData bảng sẽ được xuất trong nhiều trang tính dựa trên điều kiện được xác định trong Phân tách có điều kiện thành phần.
Đầu tiên, chúng ta sẽ kết nối nguồn ADO.Net với Biến đổi chia có điều kiện. Để làm điều đó, hãy nhấp vào mũi tên màu xanh lam trên đường dẫn luồng dữ liệu ở cuối Dữ liệu nhân viên và kéo nó đến chuyển đổi phân tách có điều kiện như thể hiện trong hình ảnh bên dưới.
Bây giờ chúng ta sẽ cấu hình phép biến đổi phân tách có điều kiện. Như tôi đã đề cập trước đây, chúng tôi sẽ phân chia dữ liệu của bảng HR.EpriseesData dựa trên giá trị của CountryRegionName và lưu trữ chúng trong các trang tính khác nhau.
Để thực hiện việc này, hãy nhấp đúp vào Trình chỉnh sửa chuyển đổi phân tách có điều kiện . Trình chỉnh sửa chuyển đổi phân tách có điều kiện hộp thoại sẽ mở ra như trong hình sau:
Như bạn có thể thấy trong hình trên, trình chỉnh sửa biến đổi phân tách có điều kiện có ba phần xác định cách dữ liệu sẽ được chuyển đến các thành phần tiếp theo.
Phần A :Trong phần này, dưới Cột danh sách thư mục của các cột đầu ra, dẫn xuất từ thành phần nguồn ADO.Net sẽ được liệt kê có thể được sử dụng để xác định điều kiện phân chia dữ liệu.
Phần B :Trong phần này, các chức năng khác nhau sẽ được liệt kê có thể được sử dụng để chuyển đổi đầu ra ở định dạng khác và được sử dụng để xác định các điều kiện để tách dữ liệu.
Phần C :Trong phần này, bạn có thể tạo một điều kiện có thể chia đầu ra của nguồn ADO.Net thành nhiều tập kết quả.
Chúng tôi sẽ thêm điều kiện trong Phần-C. Vì vậy, trước tiên hãy mở rộng nút cột và kéo CountryRegionName cột (Phần A) và thả nó vào lưới (Phần C) như thể hiện trong hình ảnh sau:
Đối với ví dụ này, chúng tôi sẽ xác định điều kiện của mình dựa trên CountryRegionName cột. Danh sách nhân viên từ “Canada” sẽ được lưu trữ trong trang tính Excel có tên Canada và danh sách nhân viên từ Úc sẽ được lưu trữ tại Úc bảng tính. Dựa trên điều kiện, chúng tôi sẽ sử dụng bằng với (==) nhà điều hành. Phương trình sẽ như sau:
[CountryRegionName] =="Úc" [CountryRegionName] =="Canada"
Sau khi các điều kiện được xác định, hãy nhấp vào OK để lưu và đóng hộp thoại.
Định cấu hình đích đến trong Excel
Bây giờ chúng ta đã phân chia luồng dữ liệu theo nhiều đường dẫn, chúng ta sẽ thêm một điểm đến cho mỗi đường dẫn. Vì chúng ta sẽ xuất dữ liệu bảng trong các trang tính Excel khác nhau, vì vậy chúng ta cần tạo hai đích Excel. Để làm điều đó, hãy kéo và thả kết nối Excel từ Hộp công cụ SSIS, như thể hiện trong hình ảnh bên dưới:
Để định cấu hình đích đến của excel, hãy bấm đúp vào Đích Excel. Trình quản lý kết nối Excel hộp thoại sẽ mở ra. Trong hộp thoại đó, nhấp vào Mới như thể hiện trong hình ảnh sau:
Một hộp thoại khác có tên Trình quản lý kết nối Excel sẽ mở. Trong hộp thoại này, chúng tôi sẽ cung cấp một đường dẫn nơi chứa tệp Excel. Tôi đã tạo Dữ liệu nhân viên tệp trên máy tính để bàn của tôi. Chúng tôi sẽ duyệt qua hệ thống tệp và chọn tệp và nhấp vào OK như thể hiện trong hình ảnh dưới đây:
Bây giờ, ở Chế độ truy cập dữ liệu hộp thả xuống, chọn Bảng hoặc Chế độ xem và trong Tên của trang tính Excel hộp thả xuống, chọn Australia $, như thể hiện trong hình ảnh bên dưới:
Bây giờ tôi sẽ cấu hình đường dẫn dữ liệu. Để làm điều đó, hãy kéo mũi tên đường dẫn dữ liệu màu xanh lam từ chuyển đổi tách có điều kiện sang Nhân viên Úc thành phần đích excel. Khi bạn kết nối đường dẫn dữ liệu với đích đến của Excel, một hộp thoại sẽ xuất hiện để chọn đầu ra mà chúng ta muốn hướng đến đích đã chọn. Hộp thoại sẽ trông như sau:
Hộp thoại bao gồm tất cả các kết quả đầu ra trong danh sách thả xuống, có sẵn từ phép chuyển đổi phân tách có điều kiện. Trong trường hợp này, danh sách thả xuống sẽ bao gồm hai tùy chọn.
- Úc
- Canada
- Đầu ra mặc định
Bấm đúp vào thành phần đích excel để ánh xạ các cột trong bảng với các cột Excel. Để làm điều đó, hãy bấm đúp vào thành phần đích Excel và trong Trình chỉnh sửa đích đến của Excel hộp thoại, chọn Ánh xạ tùy chọn nằm ở ngăn bên trái của hộp thoại, như được hiển thị trong hình ảnh bên dưới:
Trong hình ảnh trên, Cột đầu vào là tên cột của bảng Oracle và Cột Đích sẽ là tên cột của trang tính Excel. Trong bản trình diễn này, tên cột của bảng và tệp Excel giống nhau. Vì vậy, Trình chỉnh sửa đích đến của Excel sẽ tự động ánh xạ các cột đầu vào và đầu ra.
Theo cách tương tự, tôi sẽ lặp lại quy trình cấu hình luồng dữ liệu cho Canada đường dẫn dữ liệu.
- Chúng tôi cần chọn Canada trong Lựa chọn đầu ra đầu vào hộp thoại, như thể hiện trong hình ảnh bên dưới.
- Trong Trình chỉnh sửa Đích đến của Excel r, chọn Canada $ trong Tên của trang tính Excel hộp thả xuống như trong hình dưới đây.
Sau khi hoàn thành tất cả các cấu hình, toàn bộ tác vụ luồng dữ liệu sẽ giống như sau:
Kiểm tra gói SSIS
Bây giờ, hãy chạy gói và xem nó hoạt động như thế nào. Để làm điều đó, hãy nhấp vào nút Bắt đầu trên thanh menu. Nếu gói hoàn thành việc thực thi thành công, nó sẽ giống như sau:
Như hình ảnh ở trên cho thấy, gói đã chèn 1 bản ghi ở Vùng Úc trang tính và 2 bản ghi trong Vùng Canada trang tính.
Tóm tắt
Trong bài viết này, chúng tôi đã tạo một gói SSIS với một luồng dữ liệu duy nhất. Chúng tôi đã thêm chuyển đổi Phân chia có điều kiện vào luồng dữ liệu để chia dữ liệu thành nhiều đường dẫn. Sau đó, chúng tôi hướng từng đường dẫn dữ liệu đó đến các trang tính excel khác nhau.
Tài liệu tham khảo :
Xuất Dữ liệu SQL sang nhiều sổ làm việc của một tệp excel.
Các công cụ hữu ích:
Devart Thành phần luồng dữ liệu SSIS - cho phép bạn tích hợp cơ sở dữ liệu và dữ liệu đám mây thông qua Dịch vụ tích hợp máy chủ SQL.
Devart ODBC Drivers - cung cấp các giải pháp kết nối hiệu suất cao và giàu tính năng cho các ứng dụng dựa trên ODBC.