Wie man csv Listen in Drupal 7 mit Feeds importiert

Steven Schulz
Steven Schulz

[!WARNING] Legacy Content: Dieser Artikel bezieht sich auf Drupal 7. Drupal 7 hat sein End-of-Life erreicht. Zum aktuellen Drupal 11 Migrations-Guide

Ein Klassiker in Drupal ist das Importieren von Daten aus CSV-Listen. Oftmals haben Kunden irgendwelche Excel-Listen, die importiert werden sollen. Mit Drupal kann man das recht simpel via Feeds lösen. Anbei findet ihr eine kurze Anleitung, wie man das macht.

In diesem Beispiel importieren wir eine CSV-Liste, die Domain-Namen enthält, als NODES. Man könnte natürlich auch Taxonomien anlegen, das ist in diesem Fall aber nicht gewünscht.

Vorbereitung für dieses Tutorial

Du hast eine CSV-Liste, die du importieren willst, als UTF-8 gespeichert.

Du brauchst folgendes Modul: drupal.org/project/feeds Aktiviere die Feeds UI und Feeds.

Inhaltstyp anlegen

Lege einen neuen Inhaltstyp Namens “Domain” an, mit den Feldern, die auch in deiner CSV sind.

admin/structure/types/add

In meinem Fall sind in der CSV-Liste folgende Felder: (Das ist eine Domain-Liste mit Handles und so)

Domain;Ownerc;Adminc;Techc;Zonec;Created;Payable;Primary Nameserver;Secondary Nameserver;Registry status;Owner;DNSSEC;

Die lege ich mir also alle brav als Fields an, je nachdem was es ist als Zahl oder Text oder Datum usw. Benenne die Felder genauso wie die in der CSV-Liste, dann ist das Mapping (Zuordnung) später einfacher!

Feed Importer erstellen

Lege einen neuen Feed Importer an:

admin/structure/feeds

  1. Vergebe einen Namen
  2. Basic Settings so lassen
  3. Abrufer -> Change -> auf File Upload ändern
  4. Parser -> Change -> CSV Parser auswählen
  5. CSV Parser -> Einstellungen -> default delimiter auf dein Trennzeichen aus der CSV ändern, in diesem Fall ein ; (No Header checkbox leer lassen)
  6. Processor so lassen (Node Processor)
  7. Node Processor -> Einstellungen -> Inhaltstyp -> Dort deinen neuen Inhaltstyp “Domain” nehmen
  8. Mapping:
    • Source -> Domain -> Target -> Title (unique)
    • Source -> Ownerc -> Target -> Ownerc
    • usw. bis alle Felder gemappt sind
  9. Speichern!

So, hier sind wir fertig.

Daten importieren:

Dann gehen wir auf /import und nehmen unseren neuen Feed Importer, wählen die CSV-Liste aus und starten das Ganze!

Und siehe da: Die CSV wird importiert!

Zur Ausgabe kannst du später dann das Modul Views benutzen (werde ich jetzt nicht weiter drauf eingehen, das wird überall schon genug erklärt): drupal.org/project/views

Brauchst du Hilfe bei deiner Drupal-Migration?

Möchtest du deine alten Drupal 7 Daten sicher nach Drupal 11 migrieren? Ich unterstütze dich gerne dabei. Jetzt Kontakt aufnehmen

Häufig gestellte Fragen (FAQ)

Warum muss meine CSV-Datei als UTF-8 gespeichert sein?
UTF-8 Encoding verhindert Probleme mit Umlauten und Sonderzeichen (ä, ö, ü, ß etc.). Wenn die CSV nicht in UTF-8 ist, werden diese Zeichen nach dem Import falsch dargestellt. Excel-Dateien sollten als 'CSV UTF-8 (Comma delimited)' exportiert werden.
Was ist der Unterschied zwischen Abrufer, Parser und Processor beim Feeds-Modul?
Der Abrufer (Fetcher) bestimmt, woher die Daten kommen (File Upload, URL etc.), der Parser analysiert das Datenformat (CSV, XML, JSON), und der Processor legt fest, was mit den Daten passiert (Node, Taxonomy Term, User erstellen).
Wie mappe ich CSV-Spalten auf Drupal-Felder?
Im Mapping-Bereich des Feed Importers ordnen Sie jede CSV-Spalte (Source) einem Drupal-Feld (Target) zu. Wenn Ihre CSV-Header genauso heißen wie die Drupal-Feldnamen, ist das Mapping einfacher. Title sollte als 'unique' markiert werden, um Duplikate zu vermeiden.
Kann ich mit Feeds auch Taxonomien statt Nodes importieren?
Ja, ändern Sie einfach den Processor von 'Node Processor' auf 'Taxonomy Term Processor' und wählen Sie das entsprechende Vokabular. Das Mapping funktioniert ähnlich, aber Sie erstellen Taxonomy Terms statt Content Nodes.
Was passiert, wenn ich den gleichen CSV-Import nochmal ausführe?
Das hängt von den Update-Einstellungen im Processor ab. Standardmäßig werden neue Nodes erstellt. Wenn Sie 'Replace existing nodes' aktivieren und Title als unique-Identifier setzen, werden existierende Inhalte aktualisiert statt dupliziert.

Das könnte Sie auch interessieren

← Zurück zum Blog