Dziś powiemy sobie parę słów na temat możliwości jakie oferuje SQL Server jeśli chodzi o eksport danych w nim zawartych do innych formatów czy też baz danych – chodzi mianowicie o import/export wizard dostępny z poziomu graficznego interfejsu użytkownika w Management Studio. Zaczynajmy!
Pierwszym krokiem jaki należy podjąć jest wybór bazy danych z której chcemy eksportować dane – w moim przypadku tradycyjnie będzie to WideWorldImportersDW. Następnie należy kliknąć prawym przyciskiem myszy na wybraną bazę i z menu kontekstowego wybrać Tasks, a następnie Export Data – tak jak zostało to przedstawione na poniższym zrzucie ekranowym.
Wybór ten spowoduje uruchomienie kreatora umożliwiającego nam eksport danych zawartych w określonych tabelach naszej bazy danych. Pierwsze okno nie jest dla nas interesujące gdyż jest niczym innym jak po prostu oknem powitalnym – przechodzimy dalej klikając Next. Kolejne okno jest już dużo bardziej interesujące, w tym miejscu możemy wybrać źródło z którego chcemy dane eksportować oraz jaki sterownik ma być użyty. Sterownik możemy wybrać z listy rozwijanej Data source. W pole Server name możemy wpisać, tak jak sama nazwa wskazuje, nazwę serwera źródłowego. Następnie w sekcji Authentication możliwy jest wybór sposobu uwierzytelnienia w dostępie do serwera i w ostatnim oknie wybieramy bazę danych z której chcemy eksportować dane.
Po wprowadzeniu odpowiednich wartości możemy przejść dalej. W następnym kroku możemy wybrać miejsce docelowe. Opcji mamy całkiem sporo w zależności od dostępnych w systemie sterowników, najpopularniejsze z nich to:
- plik płaski (Flat File Destination)
- Microsoft Access
- Microsoft Excel
- SQL Server
W zależności od wyboru ukaże nam się inne okno konfiguracyjne – na ten moment wybierzmy plik płaski. Jego konfiguracja jest stosunkowo prosta i sprowadza się do podania lokalizacji pliku, podania jego ustawień strony kodowej/unicode oraz wskazania formatu. Jako format możemy wybrać następujące opcje:
- Delimited – wartości kolumn będą oddzielone określonym separatorem
- Fixed with – wartości kolumn będą występowały na określonym znaku np. kolumna 1 rozpoczyna się od pierwszego znaku, kolumna 2 rozpoczyna się od 40 znaku itp
- Ragged right – czyli to co wyżej z możliwością zdefiniowania separatora wiersza
Wybierzmy sobie Delimited i w opcji Text qualifier wybieramy znak jakim mają być otoczone pola tekstowe np. cudzysłów. Ostatnią bardzo ważną funkcją jest checkbox Column names in the first data row, który jak możecie się domyślać steruje tym czy w pierwszym wierszu ma być zawarty nagłówek czy też nie( w przytłaczającej ilości przypadków należy tę opcję zaznaczyć). Przykładowa konfiguracja została przedstawiona na poniższym zrzucie ekranowym.
Kolejne okno umożliwia nam wybranie sposobu pobrania danych – możemy wybrać konkretną tabelę lub widok z listy bądź też samemu napisać zapytanie SQL. Zawsze wybierajcie drugą opcję i piszcie zapytanie gdyż wybór z listy jest niczym innym jak wygenerowaniem “SELECT *”, które jak zapewne wiecie jest grzechem niewybaczalnym.
Wybieramy Write a query to specify the data to transfer i przechodzimy do okna gdzie możemy wpisać naszego SQLa. Okno to nie daje zbyt wielu możliwości możemy jedynie sparsować wpisane zapytanie lub też pobrać je z pliku zewnętrznego.
Przedostatnim interesującym nas oknem jest to, które zostało przedstawione poniżej. W tym miejscu możemy ustawić kilka interesujących nas opcji. Ze względu na fakt, iż wybraliśmy Delimited mamy możliwość zdefiniowania separatora wiersza i kolumny. CRLF jest to nic innego jak znak końca bieżącej linii tj. po jej wybraniu każdy wiersz będzie w osobnej linii. Jako separator kolumny możemy wpisać tak naprawdę dowolny znak – na ten moment wybierzemy sobie przecinek.
Powyższe okno pozwala na podgląd danych (Preview) oraz na edycję mapowań. W przypadku eksportu z bazy do pliku płaskiego okno konfiguracyjne zostało przedstawione na poniższym zrzucie:
W tym miejscu możemy wybrać np. to czy dane mają do pliku być dopisywane czy też plik ma być czyszczony, a następnie mają do niego być załadowane na nowo. W naszym przypadku plik docelowy ma być dopiero stworzony dlatego też nie możemy wybrać powyższych opcji. Jeżeli tworzymy plik na nowo to w tym miejscu możemy również wybrać w kolumnie Destination nazwy docelowych pól. Jeżeli eksportujemy dane z SQL Server do innej bazy danych to możliwy jest wybór które pola mają gdzie trafiać. Warto zaznaczyć, że jeżeli dopiero tworzymy plik docelowy to następne uruchomienie tego samego eksportu będzie nadpisywało bieżący plik.
Ostatnie okno konfiguracyjne pozwala na to czy skonstruowany przez nas pakiet ma być uruchomiony zaraz po zamknięciu kreatora (Run immediately) oraz czy chcemy go zapisać do późniejszego zapisu (Save SSIS Package). Tak właśnie jest – kreator utworzył dla nas plik .dtsx czyli pakiet SQL Server Integration Services, który później możemy w dowolny sposób modyfikować z wykorzystaniem np. Data Tools. Plik dtsx możemy zapisać w systemie plików systemu operacyjnego lub też w repozytorium SQL Server. Ponadto w tym miejscu możemy ustawić tzw. Package protection level czyli w jaki sposób powinny w naszym pakiecie być przechowywane dane wrażliwe (nie zapominajmy, że plik dtsx jest niczym innym jak plikiem xml dlatego też powinniśmy zabezpieczyć w jakiś sposób dane wrażliwe). Do dyspozycji mamy szyfrowanie loginem bieżącego użytkownika, podanie hasła czy też np. nie przechowywanie danych wrażliwych. Ostatnie okno jest niczym innym jak podsumowaniem dlatego też możemy kliknąć Finish.
Jeżeli wszystko skonfigurowaliśmy poprawnie powinniśmy zobaczyć okno podobne do powyższego. W celu weryfikacji poprawności eksportu danych możemy otworzyć nowo powstały plik aby zobaczyć zawarte w nim dane (polecam użycie edytora, który wczytuje tylko część pliku żeby nie czekać zbyt długo). Po wyłączeniu zawijania wierszy powinniśmy zobaczyć coś podobnego do poniższego zrzutu ekranowego:
W przypadku importu danych do tabeli konfiguracja kreatora przebiega bardzo podobnie i z całą pewnością większość z Was sobie z tym poradzi. Oczywiście eksport do Excela czy innej bazy wygląda nieco inaczej – jednakże zrozumienie tak prostego przykładu jak powyżej pozwoli na sprawne poruszanie się po kreatorze bez większego kłopotu. Myślę, że powyższa funkcjonalność jest bardzo prosta jednakże nie każdy ją zna, a w bardzo wielu przypadkach ta znajomość może być niezwykle użyteczna. Pamiętajmy również, że stworzyliśmy pakiet Integration Services – być może zapoznanie się z Kreatorem Eksportu/Importu będzie powodem do zapoznania się z tym niezwykle użytecznym oprogramowaniem do tworzenia przepływów danych? Mam nadzieję, że tak!
- Avoiding Issues: Monitoring Query Pushdowns in Databricks Federated Queries - October 27, 2024
- Microsoft Fabric: Using Workspace Identity for Authentication - September 25, 2024
- Executing SQL queries from Azure DevOps using Service Connection credentials - August 28, 2024
Myślę, że znajomość tego narzędzia bardzo pomaga w codziennej pracy 🙂 Mam dwa pytania: Jaki sterownik powinno się wybierać? Jakie są potrzebne uprawnienia do skorzystania z Import/Export Wizard?
Jeśli chodzi o sterowniki to wybieramy najszybszy jaki mamy do dyspozycji:P Jeśli przerzucam między instancjami SQL Server wybieram najnowszą wersję sterownika natywnego.
Co do uprawnień to jeśli możemy odczytywać dane to również możemy je eksportować.