So migrieren Sie in 6 einfachen Schritten von einer SQL-Quelle zu Drupal 8
Veröffentlicht: 2020-11-24Es wurde viel über die Bedeutung und die Vorteile der Migration zu Drupal 8 gesprochen. Die Drupal-Migration ist der wichtigste Teil eines Entwicklungsworkflows. Wir müssen sicherstellen, dass Inhalte nahtlos übertragen werden, ohne dass wichtige Benutzerinformationen und -daten verloren gehen. Lesen Sie diese vollständige Anleitung für eine erfolgreiche Migration von Drupal 7 auf Drupal 8.
Es gibt mehrere Möglichkeiten, mit verschiedenen Quellen zu Drupal 8 zu migrieren. Wir haben bereits darüber geschrieben, wie Sie von CSV zu Drupal 8 migrieren. Andere Quellen umfassen SQL, XML, JSON usw. In diesem Blog werden wir über die Migration zu Drupal 8 mit SQL als Quelle diskutieren.

Warum SQL?
Während die Auswahl der Datenquelle weitgehend von der Quelle der vorhandenen Daten abhängt, die migriert werden müssen, sind einige der anderen häufigen Gründe für die Wahl einer SQL-Quelle für eine Drupal 8-Migration:
- Es ist einfach, Abfragen zu schreiben, um die erforderlichen Daten durch eine Verbindung mit der Datenbank zu erhalten.
- Die Migration der Daten von einem Server auf einen anderen ist schneller als jede andere Methode.
- Reduziert die Nutzung vieler beigesteuerter Module.
- Kein Ansichtsdatenexport erforderlich, der zum Exportieren von CSV-Ansichtsdaten von Drupal 7-Sites verwendet wird.
- Wir benötigen das Views-Passwortfeld, das zum Migrieren sensibler Informationen (Passwörter in Hash) verwendet wird, nicht, da wir eine DB-Abfrage verwenden.
- Das Quell-CSV-Modul migrieren wird auch nicht benötigt, da wir die SQL-Quelle verwenden.
Lassen Sie den Migrationsprozess beginnen!
In diesem Blog werden wir Benutzer auf eine Drupal 8-Site migrieren. Im Folgenden sind die Schritte aufgeführt, die wir unternehmen werden, um zu Drupal 8 zu migrieren:
1. Erstellen Sie ein benutzerdefiniertes Modul für die Migration.
2. Verweisen Sie auf die Quelldatenbank.
3. Definieren Sie die Migrations-YML und ordnen Sie die identifizierten Drupal-Felder zu.
4. Erstellen Sie ein Quell-Plugin für die Migration.
5. Einzelwert-, Mehrfachwert- und Adressfelder verarbeiten.
6. Führen Sie die Migration mit dem Befehlszeilentool drush aus.
Schritt 1: Erstellen Sie ein benutzerdefiniertes Modul für die Drupal 8-Migration.
Lassen Sie uns zunächst ein benutzerdefiniertes Modul erstellen, wie Sie es in Drupal 8 erstellen. Lesen Sie diesen ausführlichen Blog zum Erstellen benutzerdefinierter Module in Drupal 8. Hier erstellen wir ein Modul namens „ Unternehmensmitarbeitermigration “. Der Modulaufbau ist wie folgt:

company_employee_migrate.info.yml : Enthält grundlegende Informationen zum Modul und seinen Abhängigkeiten.
company_employee_migrate.install : Dies wird zum Schreiben von PHP-Skripten verwendet, die während der Installation und Deinstallation des Moduls ausgelöst werden sollen. In unserem Fall löschen wir die Migrationskonfiguration, wenn das Modul deinstalliert wird. Siehe den Screenshot unten für das Skript.

company_employee_migrate.module : Dies wird zum Definieren der allgemeinen Hooks für die Site verwendet. Dies sind die ersten Dinge, die für das Modul benötigt werden. Den Rest erklären wir dir in den nächsten Schritten.
Schritt 2: Referenzieren Sie die Quelldatenbank
Als nächstes müssen wir die Quelldatenbank einrichten, aus der wir die Daten extrahieren. Aktualisieren Sie die Datei settings.php für Ihre Drupal-Site, indem Sie zu webroot -> Sites -> default -> settings.php wechseln .
Fügen Sie die neue Datenbankverbindung unterhalb der Standardverbindung hinzu, wie im folgenden Screenshot gezeigt. " migrieren " ist der Schlüssel für die Quelldatenbank.

Schritt 3: Definieren Sie die Migrations-YML und ordnen Sie die Drupal-Felder zu.
Jetzt müssen wir die Felder identifizieren, die wir migrieren möchten, und diese Felder in der Migrations-yml zuordnen. In diesem Beispiel migrieren wir Benutzer-ID, Benutzername, Kennwort, E-Mail, Status, erstellter Zeitstempel, Vorname, Nachname, Jobrolle, Postanschrift usw.
Nach der Identifizierung der Felder müssen wir die Migration unter migration_plus.migration.company_employee.yml definieren . Sehen wir uns nun die Migrations-yml und ihre Zuordnungen genauer an.

id: Eindeutige ID für die Migrations-yml.
label: Anzeigename für die Migration.
migration_group: Name der Migrationsgruppe.
source: Anmerkung Name des Migrationsquellen-Plugins. Dies wird in der Annotation @MigrateSource in src/Plugin/ migrate /source/CompanyEmployee.php definiert .
destination: Name des Migrationsziel-Plugins. In diesem Fall ist es Entity:Benutzer, da wir die Benutzerentität migrieren.
Prozess: Im Prozess werden wir die Drupal-Felder den Quellfeldern zuordnen. Die Werte auf der linken Seite sind Feldmaschinennamen und die Werte auf der rechten Seite sind die Feldnamen, die wir vom Quell-Plugin übergeben.
migration_dependencies: Dies ist ein optionaler Schlüssel. Dies wird nur verwendet, wenn eine Abhängigkeit von anderen Migrationen besteht.

Schritt 4: Erstellen Sie ein Quell-Plugin für die Migration
Das Migrationsquellen-Plugin ist das Herzstück der SQL-Migration. Nachfolgend finden Sie die detaillierte Erklärung für das Quell-Plugin.
- Das Quell-Plugin kann unter src/Plugin/migrate/source/CompanyEmployee.php erstellt werden
- Der Namespace lautet Drupal\company_employee_migrate\Plugin\migrate\source .
- Die Annotationen @MigrateSource enthalten die Quell-Plugin-ID, die wir in der Migrationsdefinition zuordnen .
- Hier erweitern wir die abstrakte SqlBase- Klasse, die vom Kernmigrationsmodul bereitgestellt wird.
Siehe den folgenden Screenshot als Referenz.

Das Quell-Plugin muss die folgenden drei Methoden implementieren –
query() : Dies gibt die Quellfelddaten zurück, indem eine Verbindung zur Quelldatenbank hergestellt wird. Siehe den Screenshot unten, der die Felddaten zurückgibt, bei denen die Benutzer-ID größer als 0 ist und die Benutzer-E-Mail mit „@phyins.com“ endet.

field() : Diese Methode gibt die verfügbaren Felder in der Quelle zurück. Unten habe ich den Codeausschnitt für die Liste der verfügbaren Felder zusammen mit baseFields() hinzugefügt.

getIds() : Diese Methode gibt eine eindeutige ID für die Quellzeile zurück . Der folgende Code gibt eine Benutzer-ID vom Typ Integer zurück, da die UID für jeden Benutzer eindeutig ist.

Neben diesen oben genannten Methoden haben wir auch:
PrepareRow() : Diese Methode wird einmal für jede Zeile aufgerufen. Je nach Anforderung laden wir hier die Daten aus verschiedenen Tabellen und Prozessen. Jede Eigenschaft, die wir mit $row->setSourceProperty erstellen, steht im Prozessschritt zur Verfügung. Wir verwenden die Drupal 8 DB-Abfrage, um die Daten in PrepareRow() abzurufen .
baseFields() : Dies wird ein Array von Basisfeldern aus „users_field_data “ enthalten, die von der query()- Methode verwendet werden können. Finden Sie den Code im unteren Bild.

Schritt 5: Einzelwert-, Mehrfachwert- und Adressfelder verarbeiten.
In Drupal haben wir verschiedene Arten von Feldern und die Verarbeitung einiger Felder kann für Entwickler beim Migrieren von Inhalten etwas schwierig werden. Ich habe die Code-Snippets für einige Felder unten hinzugefügt:
Einzelwertfelder : Diese Felder umfassen Textfelder, boolesche Felder, E-Mail usw. Suchen Sie den folgenden Codeausschnitt, um ein Einzelwertfeld zu erhalten; hier kann field_first_name wie folgt eingestellt werden.

Felder mit mehreren Werten : Diese Felder umfassen Benutzerrollen, Jobrollen, Auswahlfelder mit mehreren Werten, Kontrollkästchen usw. Für ein Feld mit mehreren Werten müssen wir ein assoziatives Array zurückgeben. Unten finden Sie das Code-Snippet für das Feld "Rollen".

Adressfelder : Die Migration des vom Adressmodul bereitgestellten Adressfelds unterscheidet sich kaum von der Migration anderer Felder. Wir müssen die abgefragten Daten in ein assoziatives Array mit den richtigen Schlüsseln vorverarbeiten, wie unten für field_mailing_address gezeigt .

Jetzt können Sie die Migration ausführen, indem Sie das Modul company_employee_migrate auf der Drupal 8-Site installieren.
Schritt 6: Führen Sie die Migration mit dem Befehlszeilentool drush aus
Endlich sind wir bereit für unsere SQL-Migration. Um die Migration durchzuführen, müssen wir drush installieren (falls Sie es noch nicht verwenden).
Liste nützlicher Drush-Befehle für die Drupal-Migration:
drush migration-status : Dies gibt den Status der Migration mit Details zurück.

drush migration-import migration_id : Dies importiert die Daten von der Quelle auf die Site.

drush migration-reset-status migration_id : Wenn die Ausführung des Skripts gestoppt oder angehalten wurde, wird der Migrationsstatus als „Importieren“ angezeigt. Dieser Befehl setzt den Migrationsstatus auf „Idle“ zurück, damit wir mit dem Migrationsimport fortfahren können.

drush migration-rollback migration_id : Dies wird zum Zurücksetzen auf den vorherigen Zustand verwendet.
