Migracja danych o produktach do Drupala z bazy danych - instrukcja
Jak przeprowadzić migrację danych o produktach z zewnętrznej bazy danych do Drupala, używając narzędzi dostępnych w ramach Migrate API? W tym wpisie pokażę, jak połączyć się z bazą, przygotować strukturę danych i wykorzystać narzędzia do migracji dostępne w Drushu. Wpis ten skierowany jest do osób, które już miały styczność z migracjami, jak i do tych, które dopiero zaczynają z nimi swoją przygodę. Zachęcam do przeczytania artykułu lub obejrzenia wideo z serii Nowoczesny Drupal.
W poprzednim artykule na blogu omówiliśmy import danych do Drupala z pliku CSV. Tym razem skupimy się na migracji z zewnętrznej bazy danych SQL do rodzaju zawartości "produkty" w Drupalu. Przykład ten pokazuje, jak łatwo można zaimportować produkty z bazy danych, a także jak radzić sobie z ewentualnymi problemami podczas samego procesu.
Przygotowanie źródła danych do migracji
Nasze dane znajdują się w zewnętrznej bazie danych, w tabeli o nazwie „produkt”. Tabela ta zawiera następujące pola:
- ID produktu – unikalny identyfikator produktu,
- Tytuł – nazwa produktu,
- Obraz – ścieżka do zdjęcia produktu,
- Opis – krótki opis produktu,
- Kategoria – kategoria, do której należy produkt,
- Tagi – dodatkowe znaczniki przypisane do produktu.
Na potrzeby tego artykułu uprościłem strukturę tej tabeli, dodając kolumny: “obraz”, “kategoria” i “tagi”. ID kategorii, tagów oraz mediów zostały podane bezpośrednio w tabeli. Dzięki temu unikamy konieczności przeprowadzania dodatkowych migracji słowników i plików multimedialnych.
Konfiguracja środowiska do migracji danych
Aby przeprowadzić migrację danych o produktach, najpierw musimy przygotować środowisko Drupala. Na potrzeby tego przewodnika korzystamy z czystej instalacji Drooplera, do której dodamy niezbędne moduły oraz stworzymy własny moduł, mający na celu obsługę procesu migracji.
Moduły w Drupalu potrzebne do migracji danych
Migracja danych w Drupalu opiera się na kilku modułach, które musimy aktywować. Pierwszym z nich jest Migrate – podstawowy moduł w Drupalu, który jest częścią rdzenia (Core). Zapewnia on podstawowe funkcje migracji danych.
Jeśli będziemy pracować z większą bazą danych, przydatne będą moduły Migrate Plus oraz Migrate Tools. Migrate Plus to rozszerzenie, które dodaje dodatkowe funkcje do procesu migracji, a Migrate Tools to zestaw narzędzi integrujący migrację z Drush, co pozwala na zarządzanie migracją bezpośrednio z poziomu terminala.
Tworzenie własnego modułu do migracji
Dodatkowo na potrzeby tego artykułu utworzyłem moduł Demigrate. Jest to moduł, który niemal w całości został wygenerowany za pomocą komendy Drush - Devil Generate.
Po wygenerowaniu należy go dostosować do naszych potrzeb. Zmieniamy quers i przy polu select, zamiast example dajemy product:
Kolejnym krokiem jest zmiana w obszarze fields poprzez dodanie odpowiednich pól z tabeli, czyli “ID”, “tytuł”, “obraz”, “opis”, “kategoria” i “tagi”.
Następnie wygenerowałem plik YAML, który mapuje pola ze źródła na pola w Drupalu. W ten sposób określamy, które pola w bazie danych mają być przypisane do odpowiednich pól w Drupalu. Na przykład, pole „tytuł” z tabeli zostanie przypisane do pola „title” w Drupalu, a „obraz” do pola „field_image”.
Poniżej pokazuję, gdzie w Drupalu można je określić:
Proces migracji danych za pomocą Drush
Kiedy nasz moduł jest gotowy, możemy przystąpić do migracji danych. Aby móc tego dokonać, musimy dodać definicję w setting.php do połączenia z bazą danych.
Następnie przechodzimy do terminala. Drupal w połączeniu z narzędziem Drush oferuje szereg komend, które znacząco ułatwiają ten proces.
Sprawdzanie statusu migracji danych
Zanim przeprowadzimy migrację, możemy sprawdzić, ile rekordów czeka na import, używając komendy:
drush migrate:status
Komenda ta wyświetla listę migracji wraz z informacją o liczbie dostępnych rekordów do importu. W naszym przypadku, w tabeli znajduje się 10 produktów, co potwierdza poprawność przygotowanych danych.
Importowanie danych
Aby zaimportować dane, używamy komendy:
drush migrate:import --group=migracja_produktow
Ta komenda pozwala na zaimportowanie wszystkich produktów z bazy danych do Drupala.
Po zakończonym imporcie, produkty pojawią się w Drupalu w sekcji „Zawartość”.
Jeśli chcielibyśmy zaimportować tylko pojedynczy rekord, możemy skorzystać z opcji „limit”:
drush migrate:import --group=migracja_produktow --limit=1
Cofnięcie (rollback) migracji danych
Czasami zdarza się, że migracja przebiega nieprawidłowo, np. z powodu błędnych danych w opisie produktu. W takim przypadku możemy cofnąć całą migrację za pomocą komendy:
drush migrate:rollback --group=migracja_produktow
Po tej operacji wszystkie zaimportowane rekordy zostaną usunięte z Drupala, a my możemy ponownie przystąpić do migracji, po uprzednim poprawieniu danych.
Aktualizacja danych po migracji
Migracja nie zawsze oznacza jednorazowy proces. Często, po zaimportowaniu danych, zachodzi potrzeba ich aktualizacji. Przykładem może być sytuacja, w której w starej bazie danych nastąpiły zmiany, a my musimy zaktualizować zawartość w Drupalu.
Możemy to zrobić za pomocą komendy:
drush migrate:import --group=migracja_produktow --update
Komenda ta zaktualizuje jedynie te rekordy, które zostały zmienione w źródłowej bazie danych, bez potrzeby importowania całego zbioru danych od nowa.
Migracja danych do Drupala - podsumowanie
Migracja danych do Drupala może wydawać się skomplikowana, jednak z wykorzystaniem Migrate API, Drush i narzędzi takich jak Migrate Plus oraz Migrate Tools, cały proces staje się znacznie prostszy i bardziej efektywny. Ważne jest odpowiednie przygotowanie danych, wygenerowanie niestandardowego modułu oraz znajomość podstawowych komend Drusha. Dzięki tym narzędziom do pracy w Drupalu można sprawnie przenosić dane z zewnętrznych źródeł do Drupala, zapewniając ciągłość działania systemu i minimalizując ryzyko błędów.
Import z bazy danych nie musi być trudny – wystarczy zastosować się do powyższych kroków, a proces przebiegnie bezproblemowo. Jeśli masz jakiekolwiek pytania, nasi eksperci od migracji danych z chęcią pomogą.
Ten artykuł powstał na bazie materiału wideo. Zapraszamy do subskrybowania kanału Nowoczesny Drupal, gdzie w każdy piątek o 12:00 publikujemy nowy film. Nasi eksperci prezentują rozwiązania lub gotowe narzędzia, które pomogą Ci wykorzystać pełen potencjał Drupala.