W tym artykule wyjaśniłem, w jaki sposób możemy podzielić i wyeksportować dane z tabeli bazy danych SQL Server do baz danych Oracle i MySQL. Ten proces jest oparty na warunku zdefiniowanym w SSIS jako „warunkowa transformacja podziału ”. Warunkowa transformacja podziału jest jak instrukcja case dowolnego języka programowania. Używając warunkowego, możemy przekierować wyjście komponentu do wielu miejsc docelowych, które jest oparte na warunku zdefiniowanym w warunkowym komponencie podziału.
Konfiguracja wersji demonstracyjnej
Możemy pobierać dane z różnych platform bazodanowych za pomocą połączenia ODBC, korzystając z narzędzi danych SQL Server. 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.
Zamierzam wyeksportować dane tabeli klientów „AdventureWorks2014 ” bazy danych do Oracle i MySQL na podstawie warunku zdefiniowanego w warunku split. Dane zostaną podzielone na podstawie „StateProvinceName ” kolumna „Klienci " stół. Rekordy, które mają wartość o nazwie „Kalifornia ” w „StateProvinceName ” kolumna zostanie wyeksportowana do bazy danych Oracle i rekordów, które mają wartość o nazwie „Waszyngton ” zostanie wyeksportowany do bazy danych MySQL.
Zainstalowałem Oracle 11g express edition i MySQL 8.0 na moim lokalnym komputerze. Stworzyłem bazę danych XE w Oracle i „WideWorldImportors ” baza danych na serwerze MySQL. Utworzyłem „Klienta ” tabela w obu bazach danych. Poniżej znajduje się kod SQL do utworzenia tabeli.
CREATE TABLE customers ( cust_id INT, cust_customername VARCHAR(500), cust_contactnumber VARCHAR(50), cust_contactnumbertype VARCHAR(10), cust_email VARCHAR(150), cust_addresstype VARCHAR(10), cust_address VARCHAR(1500), cust_city VARCHAR(50), cust_state VARCHAR(50), cust_postalcode INT, cust_countryname VARCHAR(100) )
Korzystając z komponentu przepływu danych narzędzi danych SQL Server, możemy przenosić dane pomiędzy różnymi bazami danych, konfigurując sterowniki ODBC. Narzędzia danych SQL Server, które możemy zainstalować przez menedżera połączeń, obsługują już klienta Oracle, ale w przypadku MySQL musimy utworzyć źródło danych ODBC.
Narzędzia danych SQL Server to aplikacja 32-bitowa, która działa w trybie 32-bitowym. Dlatego musimy pobrać 32-bitowy sterownik ODBC MySQL. Zobacz poniższy obraz w celach informacyjnych:
Musimy zainstalować „Złącze/ODBC 8.0.11 ” w celu podłączenia bazy danych MySQL za pomocą sterownika ODBC. Sterownik ODBC 8.0.11 jest dostępny dla 64-bitowej platformy OS. Dlatego musimy użyć starszej wersji sterowników ODBC. Zobacz poniższy obraz:
Zamiast używać sterowników łączności dostarczanych przez MySQL, użyłem sterownika ODBC dla MySQL opracowany przez Devart.
Devart ODBC Driver dla MySQL to potężny i wydajny sterownik łączności. Jest niezależny od platformy, łatwy w konfiguracji i obsługuje narzędzia innych firm do łączenia z bazą danych MySQL. Poniżej znajdują się funkcje.
- Obsługuje bezpieczne połączenie SSL i SSH.
- Zgodny z każdą wersją MySQL. Obsługuje MariaDB, bazę danych Azure dla MySQL i Amazon Aurora.
- Kompatybilny z wieloma narzędziami analitycznymi innych firm.
- Niezależne od platformy. Obsługuje zarówno 32-bitowe, jak i 64-bitowe platformy operacyjne i wiele innych.
Możesz pobrać 30-dniową wersję próbną sterownika ODBC dla MySQL tutaj . Zobacz poniższy obraz w celach informacyjnych:
Po pobraniu sterowników zainstaluj je, uruchamiając konfigurację.
Po zainstalowaniu sterowników musimy skonfigurować źródło danych ODBC, aby połączyć się z bazą danych MySQL. W tym celu otwórz źródła danych ODBC (32-bitowe). Znajduje się w Panelu sterowania>> Narzędzia administracyjne>> Źródła danych ODBC. Zobacz poniższy obraz w celach informacyjnych:
Otwórz źródła danych ODBC (32-bitowe). Okno dialogowe „Administrator źródeł danych ODBC (32-bitowy) " będzie otwarte. W tym oknie dialogowym kliknij „Dodaj ”. Kolejne okno dialogowe „Utwórz nowe źródło danych ”, który ma wszystkie sterowniki ODBC zainstalowane w komputerze, otworzy się. Z tej listy wybierz „Sterownik Devart ODBC dla MySQL ” i kliknij „Zakończ ”. Zobacz poniższy obraz w celach informacyjnych:
Po kliknięciu „Zakończ ”, otworzy się okno dialogowe do konfiguracji parametrów łączności MySQL. W tym oknie dialogowym możesz zdefiniować parametry łączności. Podaj nazwę i opis, aby rozpoznać źródło danych w odpowiednich polach. W „Serwer ” pole tekstowe podaj nazwę hosta lub adres IP komputera/serwera, na którym zainstalowany jest MySQL. Podaj odpowiednią nazwę użytkownika i hasło, aby zalogować się do serwera i wybrać bazę danych. Zobacz poniższy obraz w celach informacyjnych:
Zainstalowałem MySQL na moim lokalnym komputerze, dlatego jako pole tekstowe serwera podałem „localhost”. Łączę się z serwerem przez użytkownika „root”, dlatego użytkownik jest „root”. Idealnie nie jest to lepsze. Zamiast roota utwórz innego użytkownika i użyj go do uwierzytelnienia bazy danych MySQL. Utworzyłem „WideWorldImportors ” baza danych na serwerze baz danych MySQL, dlatego udostępniłem „WideWorldImportors ” w rozwijanej liście bazy danych.
Podobnie, 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.
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 czterech komponentów:
- Źródło ADO.NET do wypełniania danych z bazy danych SQL Server.
- Podział warunkowy, aby podzielić dane na wiele zestawów.
- Skonfiguruj miejsce docelowe MySQL i miejsce docelowe Oracle
- Skonfiguruj ścieżkę danych, aby przechowywać wynik podziału warunkowego do odpowiednich baz danych.
Skonfiguruj źródło ADO.NET
Przeciągnij i upuść „Źródło ADO.NET ” z zestawu narzędzi SSIS do „Przepływ danych ” i nazwij je „Dane sprzedaży ”, jak pokazano na poniższym obrazku:
Kliknij dwukrotnie „Dane sprzedaży ”. Okno dialogowe „Edytor źródeł ADO.NET " będzie otwarte. Ponieważ menedżer połączeń nie został jeszcze utworzony, dlatego „Menedżer połączeń ADO.NET ” rozwijane pole jest puste. Aby utworzyć nowe połączenie w tym oknie dialogowym, kliknij „Nowe ”. Kolejne okno dialogowe „Konfiguruj menedżera połączeń ” otworzy się, jak pokazano na poniższym obrazku:
W „Konfiguruj menedżera połączeń ADO.NET ”, kliknij „Nowy ”, aby otworzyć „Menedżera połączeń ” okno dialogowe.
W „Nazwa serwera ” wpisz nazwę lub adres IP serwera, na którym zainstalowano SQL Server. SQL Server jest zainstalowany na moim lokalnym komputerze, dlatego udostępniłem „localhost\SQL2016 ” jako pole tekstowe nazwy serwera. W polu rozwijanym Uwierzytelnianie wybierz typ uwierzytelniania używany do łączenia się z wystąpieniem SQL. Uwierzytelniam się na serwerze SQL przy użyciu uwierzytelniania systemu Windows, dlatego wybrałem uwierzytelnianie systemu Windows w polu rozwijanym. I na koniec w rozwijanej liście bazy danych wybierz nazwę bazy danych, w której przechowywana jest tabela. Eksportuję dane z „AdventureWorks2014 ”, dlatego wybrałem ją w „Nazwa bazy danych " upuścić pudło. Spójrz na następujący obraz:
Po zakończeniu konfiguracji kliknij „Testuj połączenie ”, aby sprawdzić 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 " upuścić. Aby pobrać dane z tabeli, wybierz „Tabela lub widok ” w menu rozwijanym trybu dostępu do danych. Po wybraniu opcji „Tabela lub widok” w polu rozwijanym, wyświetla listę wszystkich tabel utworzonych w bazie danych. Z tej listy wybierz „Klienci ” jak pokazano na poniższym obrazku:
Konfiguruj podział warunkowy
Teraz użyjemy transformacji warunkowego podziału do eksportowania danych w różnych arkuszach programu Excel na podstawie warunku. Przeciągnij warunkowy składnik podziału z przybornika SSIS do okna Przepływ danych i zmień jego nazwę na „Filtr danych ” jak pokazano na poniższym obrazku:
Wspomniałem wcześniej, dane wyjściowe z tabeli „Klienci” zostaną wyeksportowane do wielu baz danych Oracle i MySQL na podstawie warunku zdefiniowanego w „Podział warunkowy ” komponent.
Po pierwsze, połącz źródło ADO.Net z warunkową transformacją podziału. Aby to zrobić, kliknij niebieską strzałkę na ścieżce przepływu danych pod „Klienci bazy danych SQL ” i przeciągnij go do warunkowej transformacji podziału, jak pokazano na poniższym obrazku:
Aby skonfigurować podział warunkowy, kliknij dwukrotnie „Edytor transformacji podziału warunkowego”. Okno dialogowe „Edytor przekształceń warunkowego podziału ” otworzy się, jak pokazano na poniższym obrazku:
Aby zastosować warunek na „StateProvinceName ”, najpierw rozwiń węzeł kolumny, przeciągnij „StateProvinceName ” (sekcja 1) i upuść ją w siatce (sekcja 3). Warunkiem filtrowania danych jest kolumna „StateProvinceName”. Rekordy, które mają wartość „Kalifornia ” zostaną wyeksportowane do bazy danych Oracle i rekordów, które mają wartość „Waszyngton ” zostanie wyeksportowany do bazy danych MySQL. Na podstawie warunku użyjemy równa się (==) operator. Równanie jest jak poniżej:
[Cust_State]=="California" [Cust_State]=="Washington"
Spójrz na następujący obraz:
Po zdefiniowaniu warunków kliknij „OK”, aby zapisać i zamknąć okno dialogowe.
Konfiguruj miejsce docelowe MySQL
Aby wyeksportować dane z SQL Server do MySQL i Oracle, musimy więc skonfigurować dwa miejsca docelowe. Najpierw skonfiguruj miejsce docelowe MySQL. Aby to zrobić, przeciągnij i upuść miejsce docelowe ODBC z przybornika SSIS i zmień jego nazwę na „Baza danych MySQL”, jak pokazano na poniższym obrazku:
Kliknij dwukrotnie miejsce docelowe bazy danych MySQL (połączenie ODBC). Otworzy się okno dialogowe „Miejsce docelowe ODBC”. W tym oknie dialogowym kliknij „Nowy”. Otworzy się kolejne okno dialogowe „Konfiguruj Menedżera połączeń ODBC”, jak pokazano na poniższym obrazku:
Kolejne okno dialogowe „Menedżer połączeń " będzie otwarte. W oknie dialogowym lista nazw DSN utworzonych na komputerze jest wypełniona w polu „Użyj nazwy źródła danych użytkownika lub systemu " upuścić pudło. Ponieważ już skonfigurowaliśmy ODBC DSN, wybierz „Miejsce docelowe MySQL ” z listy rozwijanej, jak pokazano na poniższym obrazku:
Kliknij „Testuj połączenie ”, aby sprawdzić, czy połączenie zostało pomyślnie nawiązane, i kliknij „OK”.
Teraz w „Miejsce docelowe ODBC ”, wybierz nazwę tabeli z „Nazwa tabeli lub widoku ” menu rozwijane, jak pokazano na poniższym obrazku:
Po pomyślnym skonfigurowaniu miejsca docelowego bazy danych MySQL, skonfiguruj miejsce docelowe bazy danych Oracle.
Konfiguruj miejsce docelowe Oracle
Aby skonfigurować miejsce docelowe Oracle, przeciągnij i upuść „Miejsce docelowe ADO.NET” do okna przepływu danych i zmień jego nazwę na „Baza danych Oracle”, jak pokazano na poniższym obrazku:
Kliknij dwukrotnie bazę danych Oracle (miejsce docelowe ADO.NET). Okno dialogowe „Edytor miejsca docelowego ADO.NET " będzie otwarte. W oknie dialogowym kliknij „Nowy ”. Kolejne okno dialogowe „Konfiguruj Menedżera połączeń ADO.NET” otworzy się, jak pokazano na poniższym obrazku:
W „Konfiguruj Menedżera połączeń ADO.NET ”, kliknij „Nowy ”. Otworzy się kolejne okno dialogowe „Menedżer połączeń”. Aby skonfigurować połączenie z bazą danych Oracle, musimy wybrać „Net.Provider\OracleClient ” w „Dostawca " Okno dialogowe. Podaj nazwę hosta lub adres IP serwera bazy danych Oracle w polu tekstowym „Nazwa serwera”. Podaj nazwę użytkownika i hasło, aby połączyć instancję bazy danych Oracle. Jak wspomniałem, zainstalowałem instancję Oracle jako moją maszynę lokalną, stąd w polu tekstowym nazwy serwera podałem „localhost”. Połączyłem się z bazą danych Oracle za pomocą użytkownika „Sprzedaż”, dlatego w polu tekstowym „Nazwa użytkownika” wpisałem „Sprzedaż” jako nazwę użytkownika i wpisałem do niej hasło. Spójrz na następujący obraz:
Aby sprawdzić, czy połączenie zostało nawiązane, kliknij „Testuj połączenie ” i po nawiązaniu połączenia kliknij „OK ”, aby zamknąć okno dialogowe.
Teraz w „Edytorze miejsc docelowych ADO.NET ”, wybierz nazwę tabeli lub widoku, w którym mają zostać zapisane dane. Eksportuję dane do tabeli klientów, dlatego wybrałem „Sprzedaż.Klient ” jak pokazano na poniższym obrazku:
Konfiguruj ścieżkę danych
Po skonfigurowaniu obu miejsc docelowych skonfiguruj ścieżkę danych, aby przesyłać dane w odpowiednich bazach danych. Aby to zrobić, przeciągnij niebieską strzałkę ścieżki danych poniżej transformacji podziału warunkowego i upuść ją w miejscu docelowym ODBC (miejsce docelowe MySQL). Gdy ścieżka danych łączy się z miejscem docelowym ODBC, pojawia się okno dialogowe. Wybierz miejsce docelowe z „Wyjście ” rozwijane, aby kierować dane, które są pobierane z zapytania SQL. Okno dialogowe wygląda jak na poniższym obrazku:
Lista rozwijana jest wypełniona wszystkimi warunkami, które są zdefiniowane w transformacji warunkowej podziału. W takim przypadku menu rozwijane zawiera trzy opcje.
- Wyjście MySQL
- Wyjście Oracle
- Domyślne wyjście
Jak wspomniano powyżej, rekordy, które mają wartość „Waszyngton ” kolumny „StateProvinceName” zostanie wyeksportowane do bazy danych MySQL, dlatego wybierz MySQL Output.
Teraz zmapuj kolumny wyjściowe transformacji warunkowej z tabelą klientów bazy danych MySQL. Aby to zrobić, kliknij dwukrotnie „Baza danych MySQL ” (miejsce docelowe ODBC) i w oknie dialogowym „Miejsce docelowe ODBC” wybierz „Mapowanie ”, która znajduje się w lewym panelu okna dialogowego, jak pokazano na poniższym obrazku:
Na powyższym obrazku „Kolumny wejściowe” to nazwa kolumny tabeli SQL Server, a kolumna docelowa będzie nazwą kolumny tabeli „Klienci” arkusza MySQL. W tej demonstracji nazwy kolumn tabeli SQL i tabel MySQL są takie same, więc ich kolumny wejściowe i wyjściowe są mapowane automatycznie.
Powtórz proces konfiguracji przepływu danych dla ścieżki danych „Oracle Output” w ten sam sposób. Poniżej znajdują się zmiany.
- Musimy wybrać „Wyjście Oracle” w oknie dialogowym wyboru wejścia-wyjścia, jak pokazano na poniższym obrazku:
- W „Edytorze docelowym ADO.NET” sprawdź, czy mapowania kolumn wejścia-wyjścia są poprawne, jak pokazano na poniższym obrazku:
Po zakończeniu wszystkich konfiguracji całe zadanie przepływu danych wygląda tak, jak na poniższym obrazku:
Testowanie pakietu SSIS
Teraz uruchom pakiet, klikając przycisk „Start” na pasku menu. Jeśli pakiet zakończy się pomyślnie, powinien wyglądać jak na poniższym obrazku:
Pakiet podzielił dane wyjściowe SQL za pomocą podziału warunkowego i wyeksportował 4445 rekordów w bazie danych MySQL i 2285 rekordów w bazie danych Oracle.
Podsumowanie
W tym artykule skonfigurowaliśmy połączenie ODBC dla MySQL, stworzyliśmy pakiet SSIS z przepływem danych. Użyliśmy transformacji warunkowego podziału aby podzielić dane wyjściowe, pobrane z bazy danych serwera SQL i wyeksportować je do baz danych Oracle i MySQL.
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.