W tym artykule wyjaśnię, w jaki sposób możemy dzielić i eksportować dane z tabeli bazy danych Oracle do wielu arkuszy roboczych pliku Excel za pomocą pakietu usług integracji SQL Server.
Często administratorzy baz danych prosili o generowanie raportów ad hoc z bazy danych. Ostatnio zostałem poproszony o wygenerowanie raportu z bazy danych. Chcą, abym dostarczył raport w wielu arkuszach kalkulacyjnych pliku Excel. Można to zrobić na różne sposoby, ale zapytanie wymagało dużych zasobów. Dlatego chcę wyodrębnić dane z bazy danych za jednym razem i zdecydowałem się na skorzystanie z pakietu usług integracyjnych SQL Server. Narzędzia danych SQL Server mają jeden komponent o nazwie Transformacja warunkowego podziału które można wykorzystać do wykonania zadania.
Korzystając z narzędzi danych SQL Server, możemy pobierać dane z różnych platform bazodanowych za pomocą połączenia ODBC. Większość platform bazodanowych udostępnia sterowniki łączności, których można użyć do skonfigurowania połączenia między aplikacją a bazą danych.
Co to jest warunkowa transformacja podziału
Transformacja podziału warunkowego może kierować wiersze danych do różnych danych wyjściowych w zależności od zawartości danych. Implementacja transformacji warunkowego podziału przypomina strukturę decyzyjną CASE w języku programowania. Ocenia wyrażenia i na podstawie wyników kieruje wiersz danych do określonego wyjścia. Ta transformacja zapewnia również domyślne wyjście, więc jeśli wiersz nie pasuje do żadnego wyrażenia, jest kierowany do domyślnego wyjścia. (Odniesienie do MSDN :https://docs.microsoft.com/en-us/sql/integration-services/data-flow/transformations/conditional-split-transformation?view=sql-server-2017).
Konfiguracja wersji demonstracyjnej
Zainstalowałem Oracle 11g express edition na moim komputerze. Utworzyłem tabelę o nazwie PRACOWNIKI w HR schemat XE bazy danych i dodał kilka fikcyjnych rekordów z AdventureWorks2014 baza danych.
Poniższy kod utworzy tabelę:
CREATE TABLE „HR”. „EMPLOYEE_DATA” ( „BusinessEntityID” NUMBER(*,0), „Title” NVARCHAR2(8), „FirstName” NVARCHAR2(50), „MiddleName” NVARCHAR2(50), „LastName” NVARCHAR2(50), „Suffix” NVARCHAR2(10), „JobTitle” NVARCHAR2(50), „PhoneNumber” NVARCHAR2(25), „PhoneNumberType” NVARCHAR2(50), „EmailAddress” NVARCHAR2(50), „EmailPromotion” NUMBER( *,0), „AddressLine1” NVARCHAR2(60), „AddressLine2” NVARCHAR2(60), „Miasto” NVARCHAR2(30), „StateProvinceName” NVARCHAR2(50), „PostalCode” NVARCHAR2(15), „CountryRegionName” NVARCHAR2( 50) ) TWORZENIE SEGMENTU NATYCHMIASTOWE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 BEZKOMPRESOWE PRZECHOWYWANIE REJESTRACJI (POCZĄTKOWE 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTICREASE 0 FREELISTS 1 FREELIST GROUP 1 BUFFER_POOL_CACHEFASH DOMYŚLNE_)";Aby połączyć bazę danych Oracle za pomocą SSDT, musimy zainstalować oprogramowanie klienckie Oracle. Narzędzia danych SQL Server działają w trybie 32-bitowym, dlatego należy zainstalować 32-bitową wersję sterowników ODBC dla Oracle. Możesz pobrać klienta Oracle stąd.
Utworzyłem plik Excela o nazwie „HRData.xls ’, który ma dwa arkusze o nazwie Australia i Kanada . Dane zostaną podzielone na podstawie wartości CountryRegionName kolumna. Jeśli wartość kolumny CountryRegionName kolumna to Kanada następnie będzie przechowywany w Kanadzie arkusza roboczego i jeśli wartość kolumny CountryRegionName to Australia następnie będzie przechowywany w Australii arkusz roboczy.
Ponieważ wszyscy wiemy, jak utworzyć pakiet SSIS, wyjaśnię bezpośrednio, jak utworzyć zadanie przepływu danych.
Utwórz zadanie przepływu danych
W zadaniu Przepływ danych użyjemy następujących trzech komponentów:
- Źródło ADO.NET do wypełniania danych z bazy danych Oracle.
- Podział warunkowy, aby podzielić dane na wiele zestawów.
- Miejsce docelowe Excel z dwoma skoroszytami o nazwach „Australia” i „Kanada”.
Skonfiguruj źródło ADO.NET
Przeciągnij i upuść Źródło ADO.NET z Zestawu narzędzi SSIS do Przepływu danych okna i nazwij je Dane pracownika jak pokazano na poniższym obrazku:
Kliknij dwukrotnie Dane pracownika . Edytor źródeł ADO.NET otworzy się okno dialogowe. Tutaj nie stworzyliśmy jeszcze żadnego połączenia, stąd menedżer połączeń ADO.NET pole rozwijane jest puste. Stworzymy nowe połączenie. Aby to zrobić, kliknij Nowy w tym oknie dialogowym. Następnie pojawia się kolejne okno dialogowe, Skonfiguruj Menedżera połączeń, otworzy się, jak pokazano na poniższym obrazku:
W Konfiguruj Menedżera połączeń ADO.NET w oknie dialogowym kliknij Nowy . Inne okno dialogowe, Menedżer połączeń , otworzy się.
Domyślnie .Net Providers\SQLClient Data Provider zostanie wybrany w Dostawcy upuścić pudło. Ponieważ wypełniamy dane z bazy danych Oracle, wybierzemy Dostawcę danych OracleClient .
W Nazwie serwera wpisz nazwę lub adres IP serwera, na którym zainstalowano Oracle 11g. Nazwa użytkownika i hasło będą używane do połączenia z bazą danych Oracle. Zainstalowałem Oracle na mojej lokalnej maszynie wirtualnej, dlatego nazwa serwera to localhost . Zamierzam połączyć bazę danych za pomocą HR użytkownik, stąd nazwa użytkownika to HR . Podał odpowiednie hasło i kliknij OK . Zobacz następujący obraz:
Po zakończeniu konfiguracji kliknij Testuj połączenie aby zweryfikować połączenie z bazą danych i kliknij OK.
Skonfigurowaliśmy menedżera połączeń ADO.NET, dlatego domyślny menedżer połączeń zostanie wybrany automatycznie w Menedżerze połączeń ADO.NET rozwijanej listy. Zamierzamy pobrać dane z tabeli, dlatego wybierz Tabela lub Widok w menu rozwijanym trybu dostępu do danych. Utworzyłem już DATA PRACOWNIKÓW tabela w HR Schemat bazy danych Oracle, dlatego wybierz HR.EmployeesData w Nazwie tabeli lub widoku rozwijane pole, jak pokazano na poniższym obrazku:
Konfiguruj podział warunkowy
Teraz, aby wyeksportować dane w różnych arkuszach programu Excel na podstawie warunku, użyjemy transformacji podziału warunkowego. Przeciągnij warunkowy komponent podziału z SSIS przybornik do Przepływu danych okno, jak pokazano na obrazku poniżej.
Wspomniałem wcześniej, wyjście danych HR.EmployeeData tabela zostanie wyeksportowana w wielu arkuszach roboczych na podstawie warunku zdefiniowanego w Podziale warunkowym komponent.
Najpierw połączymy źródło ADO.Net z transformacją podziału warunkowego. Aby to zrobić, kliknij niebieską strzałkę na ścieżce przepływu danych u dołu Danych pracowników komponentu i przeciągnij go do warunkowej transformacji podziału, jak pokazano na poniższym obrazku.
Teraz skonfigurujemy warunkową transformację podziału. Jak wspomniałem wcześniej, dane z tabeli HR.EmployeesData podzielimy na podstawie wartości CountryRegionName i przechowuj je w różnych arkuszach roboczych.
Aby to zrobić, kliknij dwukrotnie Edytor przekształceń podziału warunkowego . Edytor przekształceń warunkowego podziału otworzy się okno dialogowe, jak pokazano na poniższym obrazku:
Jak widać na powyższym obrazku, edytor warunkowego podziału transformacji ma trzy sekcje, które określają sposób kierowania danych do kolejnych komponentów.
Sekcja A :w tej sekcji pod Kolumnami zostanie wyświetlona lista folderów kolumn wyjściowych, pochodząca z komponentu źródłowego ADO.Net, która może być użyta do zdefiniowania warunków podziału danych.
Sekcja B :W tej sekcji zostaną wymienione różne funkcje, których można użyć do konwersji danych wyjściowych w innym formacie i użyć do zdefiniowania warunków podziału danych.
Sekcja C :W tej sekcji możesz utworzyć warunek, który może podzielić dane wyjściowe źródła ADO.Net na wiele zestawów wyników.
Dodamy warunek w sekcji C. Więc najpierw rozwiń węzeł kolumny i przeciągnij CountryRegionName kolumnę (sekcja A) i upuść ją w siatce (sekcja C), jak pokazano na poniższym obrazku:
W tym przykładzie zdefiniujemy nasz warunek na podstawie CountryRegionName kolumna. Lista pracowników z „Kanady” będzie przechowywana w arkuszu programu Excel o nazwie Kanada a lista pracowników z Australii będzie przechowywana w Australii arkusz roboczy. Na podstawie warunku użyjemy równa się (==) operator. Równanie będzie wyglądało następująco:
[CountryRegionName]=="Australia"[CountryRegionName]=="Kanada"
Po zdefiniowaniu warunków kliknij OK aby zapisać i zamknąć okno dialogowe.
Konfigurowanie miejsca docelowego Excel
Teraz, gdy podzieliliśmy przepływ danych na wiele ścieżek, dodamy miejsce docelowe dla każdej ścieżki. Ponieważ zamierzamy eksportować dane tabeli w różnych arkuszach programu Excel, musimy utworzyć dwa miejsca docelowe programu Excel. Aby to zrobić, przeciągnij i upuść połączenie Excela z SSIS Toolbox, jak pokazano na poniższym obrazku:
Aby skonfigurować miejsce docelowe programu Excel, kliknij dwukrotnie miejsce docelowe programu Excel. Menedżer połączeń Excel otworzy się okno dialogowe. W tym oknie dialogowym kliknij Nowy jak pokazano na poniższym obrazku:
Kolejne okno dialogowe o nazwie Menedżer połączeń programu Excel będzie otwarte. W tym oknie dialogowym podamy ścieżkę, w której znajduje się plik Excel. Utworzyłem Dane pracownika plik na moim pulpicie. Przejdziemy przez system plików, wybierzemy plik i klikniemy OK jak pokazano na poniższym obrazku:
Teraz w trybie dostępu do danych z listy rozwijanej wybierz Tabela lub widok oraz w Nazwie arkusza Excela z listy rozwijanej wybierz Australia$, jak pokazano na poniższym obrazku:
Teraz skonfiguruję ścieżkę danych. Aby to zrobić, przeciągnij niebieską strzałkę ścieżki danych z transformacji warunkowego podziału do Pracownicy Australii składnik docelowy programu Excel. Po podłączeniu ścieżki danych do miejsca docelowego programu Excel pojawi się okno dialogowe, w którym można wybrać dane wyjściowe, które chcemy skierować do wybranego miejsca docelowego. Okno dialogowe będzie wyglądać następująco:
Okno dialogowe zawiera wszystkie dane wyjściowe na liście rozwijanej, która jest dostępna z warunkowego podziału transformacji. W takim przypadku lista rozwijana będzie zawierać dwie opcje.
- Australia
- Kanada
- Domyślne wyjście
Kliknij dwukrotnie składnik docelowy programu Excel, aby zmapować kolumny tabeli z kolumnami programu Excel. Aby to zrobić, kliknij dwukrotnie komponent docelowy programu Excel i w Edytorze miejsca docelowego programu Excel w oknie dialogowym wybierz Mapowanie opcja znajdująca się w lewym panelu okna dialogowego, jak pokazano na poniższym obrazku:
Na powyższym obrazku Kolumna wprowadzania to nazwa kolumny tabeli Oracle i Kolumna docelowa będzie nazwą kolumny arkusza Excel. W tej demonstracji nazwa kolumny tabeli i pliku Excel są takie same. Więc Edytor docelowy Excela automatycznie mapuje kolumny wejściowe i wyjściowe.
W ten sam sposób powtórzę proces konfiguracji przepływu danych dla Kanady ścieżka danych.
- Musimy wybrać Kanadę w Wybór wejścia i wyjścia okno dialogowe, jak pokazano na poniższym obrazku.
- W Edycji docelowej programu Excel r, wybierz Kanada$ w Nazwie arkusza Excela rozwijane pole, jak pokazano na obrazku poniżej.
Po zakończeniu wszystkich konfiguracji całe zadanie przepływu danych będzie wyglądało następująco:
Testowanie pakietu SSIS
Teraz uruchommy pakiet i zobaczmy, jak działa. Aby to zrobić, kliknij Rozpocznij na pasku menu. Jeśli pakiet zakończy się pomyślnie, powinien wyglądać następująco:
Jak pokazuje powyższy obrazek, pakiet wstawił 1 rekord w regionie Australii arkusz roboczy i 2 rekordy w regionie Kanady arkusz roboczy.
Podsumowanie
W tym artykule stworzyliśmy pakiet SSIS z pojedynczym przepływem danych. Do przepływu danych dodaliśmy transformację podziału warunkowego, aby podzielić dane na wiele ścieżek. Następnie skierowaliśmy każdą z tych ścieżek danych do różnych arkuszy programu Excel.
Referencje :
Eksportuj dane SQL do wielu skoroszytów pliku Excel.
Przydatne narzędzia:
Komponenty Devart SSIS Data Flow — umożliwiają integrację danych z bazy danych i danych w chmurze za pośrednictwem usług integracji serwera SQL.
Devart ODBC Drivers – zapewniają wysokowydajne i bogate w funkcje rozwiązania łączności dla aplikacji opartych na ODBC.