Migrieren Sie Daten aus einer CSV-Datei in Drupal 8/9

Veröffentlicht: 2022-02-16

Der Prozess der Migration von Daten aus einer CSV-Datei in eine Drupal-Datenbank kann über die integrierte Migrate-API von Drupal und drei zusätzliche benutzerdefinierte Module (Migrate Source CSV, Migrate Plus und Migrate Tools) durchgeführt werden.

Dies ist als ETL-Prozess (Extract - Transform - Load) bekannt, bei dem Daten im ersten Schritt aus einer Quelle geholt, im zweiten Schritt transformiert und schließlich im dritten Schritt an ihr Ziel in der Drupal-Datenbank geladen werden.

Dieses Tutorial erklärt die Erstellung von 12 Buchknoten für eine Bibliotheksdatenbank. Lesen Sie weiter, um zu erfahren, wie!

Migrieren Sie Daten aus einer CSV-Datei in Drupal 8/9

Schritt Nr. 1 - Installieren Sie Drush und die erforderlichen Module

Um Migrationen in Drupal durchzuführen, benötigen wir Drush. Drush ist kein Drupal-Modul, sondern eine Befehlszeilenschnittstelle zum Ausführen von Drupal-Befehlen. Um die neueste Version von Drush zu installieren,

  • Öffnen Sie die Terminalanwendung Ihres Systems
  • Platzieren Sie den Cursor außerhalb des Verzeichnisses /web .
  • Typ: Komponist benötigt Drush/Drush

Dadurch wird Drush im Verzeichnis vendor/bin/drush Ihrer Drupal-Installation installiert. Es ist jedoch umständlich, jedes Mal, wenn Sie einen Drush-Befehl ausführen möchten, vendor/bin/drush anstelle von drush einzugeben.

Drush Launcher ermöglicht es, die spezifische Drush-Version jeder Drupal-Installation auf Projektbasis auszuführen.

Warum ist das sinnvoll?

Jedes Projekt hat unterschiedliche Anforderungen, spezifische Drush-Versionen helfen, Abhängigkeitsprobleme zu vermeiden. Einige Contrib-Module funktionieren möglicherweise nicht richtig mit der neuesten Version von Drush.

Die spezifischen Anweisungen für OSX- und Windows-Systeme finden Sie hier: https://github.com/drush-ops/drush-launcher#installation---phar

Für ein Linux-System:

  • Geben Sie Folgendes ein, um die Datei namens drush.phar von GitHub herunterzuladen:

wget -O drush.phar
https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar

  • Geben Sie Folgendes ein, um die Datei ausführbar zu machen: chmod +x drush.phar
  • Geben Sie Folgendes ein, um die .phar - Datei in Ihren $PATH zu verschieben und Drush als globalen Befehl auszuführen: sudo mv drush.phar /usr/local/bin/ drush

Es ist jetzt an der Zeit, die erforderlichen beigetragenen Module zu installieren, um die Migration durchzuführen.

  • Geben Sie Folgendes ein:

composer require drupal/migrate_tools
composer require drupal/migrate_source_csv


Migrieren Sie Daten aus einer CSV-Datei in Drupal 8/9 Sobald Composer das Herunterladen der Module abgeschlossen hat,

  • Öffnen Sie das Drupal-Backend in Ihrem Browser
  • Klicken Sie auf Erweitern
  • Aktivieren Sie Migrate , Migrate Plus , Migrate Tools und Migrate Source CSV
  • Klicken Sie auf Installieren

Migrieren Sie Daten aus einer CSV-Datei in Drupal 8/9


Schritt Nr. 2 – Mehr über den ETL-Prozess

Der Prozess des Extrahierens, Transformierens und Ladens von Daten kann erreicht werden, indem die Migration in einer .yml-Datei definiert und dann mit einem Drush-Befehl ausgeführt wird, damit die Drupal-Datenbank korrekt gefüllt werden kann.

Es gibt einige wichtige Fakten zu beachten:

  1. Jeder der Schritte wird durch Drupal-Plugins ausgeführt.
  2. Sie dürfen nur ein Plugin im ersten Schritt (Quelldefinition, dh Extrahieren) und ein Plugin im letzten Schritt (Zieldefinition, dh Laden) des Prozesses verwenden.
    • Mit anderen Worten, Sie dürfen Daten nur aus einer Quelle (CSV-Datei, JSON-Feed usw.) abrufen und sie in Drupal nur unter einem bestimmten Entitätsbündel speichern, z. B. Artikel, Seite, einem benutzerdefinierten Inhaltstyp, einem Benutzer oder einem auch Konfigurationsentität.
  3. Sie dürfen so viele Plugins wie nötig verwenden, um die Daten so zu modellieren, dass sie dem von Drupal erwarteten Format entsprechen.
  4. Drupal hat standardmäßig eine Liste von Quell-/Prozess-/Ziel-Plugins, die innerhalb der Definitionsdatei verwendet werden können.

Um eine Liste aller Quell-Plug-ins anzuzeigen,

  • Öffnen Sie Ihr Terminalfenster.
  • Geben Sie Folgendes ein:

drush ev
"print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));"

Diese Liste ist etwas länger, denken Sie daran, dass Sie im Prozessschritt so viele Plugins verwenden können, wie Sie benötigen.

Um eine Liste aller Ziel-Plugins anzuzeigen,

  • Typ :

drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"


"

Hinweis : Das CSV-Plug-in ist vorhanden, weil wir das Migrate Source CSV-Modul bereits aktiviert haben.

Um eine Liste aller Prozess-Plugins anzuzeigen,

  • Geben Sie Folgendes ein:

drush ev
"print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));"

Diese Liste ist etwas länger, denken Sie daran, dass Sie im Prozessschritt so viele Plugins verwenden können, wie Sie benötigen.

Hinweis: Das CSV-Plug-in ist vorhanden, weil wir das Migrate Source CSV-Modul bereits aktiviert haben. Um eine Liste aller Prozess-Plugins anzuzeigen, geben Sie Folgendes ein: drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));" Diese Liste ist etwas länger, denken Sie daran, dass Sie im Prozessschritt so viele Plugins verwenden können, wie Sie benötigen. Um eine Liste aller Ziel-Plugins anzuzeigen, geben Sie Folgendes ein: drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"

Um eine Liste aller Ziel-Plugins anzuzeigen,

  • Geben Sie Folgendes ein:

drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"


Hinweis: Das CSV-Plug-in ist vorhanden, weil wir das Migrate Source CSV-Modul bereits aktiviert haben. Um eine Liste aller Prozess-Plugins anzuzeigen, geben Sie Folgendes ein: drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.source')->getDefinitions()));" Diese Liste ist etwas länger, denken Sie daran, dass Sie im Prozessschritt so viele Plugins verwenden können, wie Sie benötigen. Um eine Liste aller Ziel-Plugins anzuzeigen, geben Sie Folgendes ein: drush ev "print_r(array_keys(\Drupal::service('plugin.manager.migrate.destination')->getDefinitions()));"

Schritt Nr. 3 – Erstellen Sie den Inhaltstyp

  • Klicken Sie auf Struktur > Inhaltstypen > Inhaltstyp hinzufügen
  • Erstellen Sie den Inhaltstyp „Buch“.
  • Klicken Sie auf Felder speichern und verwalten
  • Verwenden Sie die Titelzeile der CSV-Datei, um die Felder zu erstellen

Ich werde die Werte der Spalten edition_number und editor verketten, daher benötige ich für diesen Zweck nur ein Feld in der Datenbank.

Hinweis: Die Feldnamen (Maschinennamen) müssen nicht exakt mit den Spaltennamen der CSV-Datei übereinstimmen, dennoch ist es sinnvoll, sie zumindest mit ähnlichen Wörtern zu verknüpfen – das erleichtert die Feldzuordnung im Prozessschritt.

Migrieren Sie Daten aus einer CSV-Datei in Drupal 8/9

Das Titelfeld ist für jeden Drupal-Knoten obligatorisch, daher muss kein Titelfeld erstellt werden. Sie können das Textfeld unverändert lassen oder es löschen, es hängt davon ab, was Sie mit Ihrem speziellen Inhaltstyp vorhaben.


Schritt Nr. 4 – Die Migrationsdefinitionsdatei

Quellschritt

  • Öffnen Sie Ihren bevorzugten Code-Editor
  • Geben Sie Folgendes ein:

id: my_first_migration
label: Migrate terms from a CSV source
source:
plugin: csv
path: public://csv/library.csv
header_row_count: 1
ids:
[id]
delimiter: ';'
enclosure: "'"

Die ID der Datei stimmt mit ihrem Namen überein.

Wir verwenden das csv -Plugin des Contrib-Moduls Migrate Source CSV im Source-Bereich.

Die Zahl 1 bei der Option header_row_count gibt den Wert der Spaltentitel an (sie werden alle in der ersten Zeile platziert).

Die ids -Definition stellt die eindeutige Kennung für jeden Datensatz in der CSV-Datei bereit, in diesem Fall die id -Spalte, die vom Typ integer ist. Vergessen Sie die Klammern nicht, da das Modul hier ein Array erwartet.

Trennzeichen und Umschließung beziehen sich auf die Struktur der CSV-Datei, in meinem speziellen Fall wird sie durch „;“ getrennt. Zeichen, während Zeichenfolgen in einfache Anführungszeichen „'“ gesetzt werden.

Migrieren Sie Daten aus einer CSV-Datei in Drupal 8/9

Beachten Sie auch die Definition eines Pfades. Dort müssen Sie die CSV-Datei ablegen, damit Drupal die Daten daraus lesen kann.

  • Öffnen Sie Ihre Terminalanwendung.
  • Typ :

mkdir web/sites/default/files/csv
cp /home/path/to/library.csv web/sites/default/files/csv/
chmod -R 777 web/sites/default/files/csv/

Dieser Wille:

  1. Erstellen Sie ein Verzeichnis namens csv im öffentlichen Ordner Ihrer Drupal-Installation.
  2. Legen Sie eine Kopie der CSV-Datei in diesem Verzeichnis ab.
  3. Machen Sie die Datei für alle im System zugänglich (einschließlich des Quell-Plugins).

Prozessstufe

Hier ordnen wir jede der Spalten der CSV-Datei den Feldern im Inhaltstyp zu:

process:
title: title
field_id: id
field_author: author
field_location: location
field_availability: availability
field_editor:
plugin: concat
source:
- editor
- edition_number
delimiter: ' '
type:
plugin: default_value
default_value: book

Das Feld field_editor ist das Ergebnis der Verkettung von 2 Strings (die Werte in den Spalten editor und edition_number ).
Die ersten 5 Schlüssel/Wert-Paare in der Form drupal_machine_name: csv_column_name ordnen die CSV-Einträge den Datenbankfeldern zu, ohne Änderungen vorzunehmen.

Die Option Trennzeichen ermöglicht es, zwischen den beiden Zeichenfolgen ein Trennzeichen zu setzen, in diesem Fall ein Leerzeichen.

Das Plugin default_value hilft uns, einen Entitätstyp zu definieren, da diese Informationen in den Quelldaten nicht verfügbar sind.

Zielschritt

Der letzte Teil dieses Prozesses ist der Zielschritt.

destination:
plugin: entity:node

Wir migrieren Inhalte und jeder Datensatz wird ein Knoten sein.


Schritt 5 – Führen Sie die Migration durch

  • Klicken Sie auf Konfiguration > Konfigurationssynchronisierung > Importieren > Einzelnes Element
  • Wählen Sie Migration aus der Dropdown-Liste aus
  • Fügen Sie den Code aus der .yml - Datei in das Textfeld ein
  • Klicken Sie auf Importieren

Migrieren Sie Daten aus einer CSV-Datei in Drupal 8/9

  • Klicken Sie auf Bestätigen, um die Konfiguration zu synchronisieren. Sie erhalten die Meldung „Die Konfiguration wurde erfolgreich importiert“
  • Wechseln Sie in die Terminalanwendung.
  • Geben Sie Folgendes ein:

drush migrate:import my_first_migration


Migrieren Sie Daten aus einer CSV-Datei in Drupal 8/9

Sie können nun den Inhalt Ihrer Website überprüfen.

Migrieren Sie Daten aus einer CSV-Datei in Drupal 8/9

Sie haben die Grundprinzipien der Migration von Daten aus einer CSV-Datei nach Drupal 8/9 erlernt.

Wie Sie bereits gesehen haben, erfordert der Migrationsprozess Aufmerksamkeit für die Details. Stellen Sie also sicher, dass Sie zuerst auf einem Staging-Server arbeiten, da ein kleiner Fehler die gesamte Site beschädigen kann. Ich hoffe, Ihnen hat dieses Tutorial gefallen.

Danke fürs Lesen!