CSV Import UND Update von Produktdaten
am 21.05.2008 - 13:24 Uhr in
Hallo,
da ich absehen kann das sich mir die Aufgabe stellen wird, folgendes Aufgabenstellung zu bewältigen, starte ich schon mal die Anfrage ob dazu jemand Tips,Ideen oder Lösungsansätze hat.
Ich werde als Teil eines Drupalprojektes Produktdaten aus einer CSV auslesen und in ein Node überführen müssen. Soweit so einfach, ein gepatchtes http://drupal.org/handbook/modules/node_import (gepatched um statt eines Kommas ein Semikolon nutzen zu dürfen) würde ja reichen.
Nun kommt aber der Pferdefuss zu tragen. Dieser Import ist nicht einmalig, sondern wiedergekehrend.
Also muss ich prüfen können ob ein Artikel
a) neu ist -> neu eintragen
b) schon vorhanden und unverändert ist -> ignorieren
c) vorhanden ist und verändert wurde -> updaten.
Und genau da sehe ich das Problem, da ich für dieses Problem zumindest noch kein fertiges Modul entdeckt hab. In wie weit die Import/Export API hier hilfreich ist kann ich nicht beurteilen. Mich schreckt aber der Hinweis ab das das Module zur Zeit nicht wirklich gepflegt wird.
Läuft das ganze darauf hinaus das node_import Modul erweitern zu müssen, bzw ein Modul zu schreiben das dadrauf aufsetzt, aber eben die Update-Funktionalität mitbringt?
Oder hat noch jemand andere Ideen die dieses Problem lösen?
Grüße Methos
- Anmelden oder Registrieren um Kommentare zu schreiben

Wenn ich das richtig im Kopf
am 21.05.2008 - 13:29 Uhr
Wenn ich das richtig im Kopf habe, kannst du auch ohne Patch ein Semikolon verwenden. Grundsätzlich ist es aber natürlich gangbarer den CSV Export anzuweisen das gewünschte Trennzeichen zu benutzen, anstatt das Import-Modul umzumodeln.
Aus was für einer Datenquelle stammen deine zu importierenden Daten denn ursprünglich?
--
"Look, Ma, I'm dead!"
Cell, Stephen King
Da es sich um Fremddaten
am 21.05.2008 - 15:19 Uhr
Da es sich um Fremddaten eines Dritten (z.B. eines Affiliate-Anbieters ) handelt, habe ich null Einfluss auf den Export und muss im Zweifel nehmen was ich bekommen kann.
Der Punkt ist aber noch mein kleinstes Problem. je nach dem wie das Modul gecodet wurde muss ich vll nur genau einen Parameter bei fgetcsv (oder wie die Funktion nu genau heißt) ändern.
Mehr Probleme sehe ich eher in der Sache mit dem Updaten von Daten.
Und eine Sache hab ich natürlich noch vergessen. Richtig schön wäre es wenn das ganze natürlich auch noch automatisch per cronjob machbar wäre. Aber das ist der letzte schritt in der ganzen Sache.. erstmal das ganze machbar haben ist wichtiger.
Wenn die CSV-Datensätze
am 21.05.2008 - 15:47 Uhr
Wenn die CSV-Datensätze einen eindeutigen Schlüssel führen wäre ein Lösungsansatz, dir ein eigenes Modul zu stricken, welches beim Einlesen der CSV prüft, ob ein Node deines extra erstellten Typs in dessen zueghörigem Feld, in dem du diesen Fremdschlüssel aufbewahrst, diesen Schlüssel führt. Ist dem so => Update, ist dem nicht so => Insert. Wird ein Fremdschlüssel in den Nodes geführt, aber nicht im aktuellen CSV File => Delete.
Per hook_cron() hängst du das Modul in den Drupal-Cron mit rein. Über die Nodeapi kannst du entsprechende Manipulationen in Drupals DB vornehmen. Je nach Datenmenge in einem CSV File bietet sich evtl. noch der Zwischenschritt an, die CSV erstmal in eine eigene DB-Tabelle einzulesen, um für die Überprüfungen keine Probleme mit dem PHP zur Verfügung stehenden Speicher zu bekommen, wenn du die komplette CSV versuchst im Speicher zu halten.
--
"Look, Ma, I'm dead!"
Cell, Stephen King
ok, dann kommt der Teil des
am 21.05.2008 - 16:31 Uhr
ok, dann kommt der Teil des Projektes nach ganz hinten auf die Liste der Todos ..
denn dazu muss ich mich erstmal mit Drupal-coding auseinander setzen. davon hab ich bisher noch keine Ahnung.
Danke für die Einschätzung und die Hints zur Lösungsidee