-

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.
Przykład zewnętrznej bazy danych, w której znajdują się produkty do migracji danych do Drupala.


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 ToolsMigrate 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:

Tworzenie modułu Demigrate, potrzebnego do migracji danych, przy użyciu komendy Drush.


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”.

Mapowanie pól w pliku YAML, aby pola z bazdy danych przypisywały się do odpowiednich pól w Drupalu.


Poniżej pokazuję, gdzie w Drupalu można je określić:

Zarządzanie polami w sekcji Produkt w Drupalu na potrzeby migracji danych.


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.

Migracja danych do Drupala z użyciem Drush.


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ść”.

Widok zaimportowanych produktów do systemu Drupal z bazy danych.


Jeśli chcielibyśmy zaimportować tylko pojedynczy rekord, możemy skorzystać z opcji „limit”:

drush migrate:import --group=migracja_produktow --limit=1
Opcja importowania tylko jednego produktu do Drupala z bazy danych z użyciem Drush.


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.

-