Feeds Datensätze finden
am 31.08.2013 - 16:51 Uhr in
Mit dem Modul Feeds ist es möglich, Daten aus einer CSV-Datei zu importieren.
Beim 1. Import entstehen so viele neue Nodes.
Beim erneuten Import einer sich wöchentlich ändernden CSV-Datei gibt es dann aber 4 Varianten.
Beispiel:
1. CSV-Datei mit 1000 Datensätzen => alle werden als "neu" importiert
2. CSV-Datei mit 900 Datensätzen, davon
100 neu (in der 1. nicht enthalten) => werden als neu importiert
500 unverändert (also der hash-Wert nicht verändert) => Nodes werden überhaupt nicht angesprochen
300 mit geänderten Wert (also hash-Wert abweichend) => Nodes werden akualisiert/geändert
Es gibt also 200 Datensätze aus der 1. CSV-Datei, die in der 2. CSV-Datei nicht mehr enthalten sind; demzufolge 200 "Node-Leichen".
Gibt es eine Möglichkeit, diese "Node-Leichen" zu finden ?
Hinweis:
Ich habe versucht, dem Inhaltstypen ein zusätzliches Statusfeld hinzuzufügen und dann mit VBO alle Nodes vor dem 2. Import auf den Status "alt" gesetzt. Dann beim nächsten Import mit Rules den Zustand neu/geändert aus den Nodeproperties abgefragt und so das Statusfeld geändert.
Nur die ignorierten/übersprungenen Datensätze lassen sich nicht von den nicht mehr vorhandenen Datensätzen unterscheiden.
Feeds scheint jeden Datensatz der CSV-Datei abzuarbeiten, ohne zu protokollieren, ob es sich um einen nicht geänderten Datensatz mit unverändertem hash-Wert handelt.
- Anmelden oder Registrieren um Kommentare zu schreiben
Diese Problematik stellt sich
am 02.09.2013 - 08:42 Uhr
Diese Problematik stellt sich mir auch.
Ich habe dafür ein kleines Modul geschrieben mit eigenem Batch-Import, das beim Aufrufen des Crons gestartet wird.
Es ist allerdings nur im groben Rahmen fertig, weil ständig andere Dinge wichtiger sind. ;-)
Folglich kann ich auch nicht sagen, es genauso funktioniert, wie ich es mir vorstelle.
Aber evt. kann ich Dir ja einen Denkanstoß geben:
Es sollen ja eigentlich vor dem Import alle diesen Import betreffenden Nodes status = 0 erhalten und nur die, die im CSV enthalten sind, sollen wieder aktiviert werden.
Wenn nun aus welchem Grund auch immer der der Batch-Import nicht durchgeführt werden kann, obwohl der vorherige Update auf status 0 bereits durchgeführt wurde, dann sind alle deaktiv.
Das ist nicht schön.
Der Batch-Import erlaubt mit 'finished' die Definition einer Funktion, die nur ausgeführt wurde, wenn der Batch erfolgreich durchgeführt wurde.
In dieser Funktion prüfe ich bei jeder Node, auf was das published Datum steht.
Wenn dieses wesentlich älter ist, als zu erwarten ist, wenn beim Import eine Änderung auf diesen Node durchgeführt wurde, dann wird dieser Datensatz auf status = 0 gesetzt.
Wenn ich weiß, wie lange der Import in der Regel dauert, dann kann ich diesen Wert korrekt schätzen.
Das erfordert allerdings, daß ich den Haken im Import so setze, daß der Datensatz immer aktualisiert wird, auch wenn der hash-Wert gleich ist.
Andernfalls bleibt das published-Datum ja auch für Inhalte gleich, deren Inhalt unverändert weiter erhalten bleiben soll.
So und nun bin ich gespannt, ob evt. noch intelligentere oder einfachere Lösungsvorschläge kommen....
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Datum Batch-Import -> Systemvariable
am 02.09.2013 - 08:54 Uhr
@montviso,
die Modulfunktion hoert sich gut an. Was Du im Modul noch tun koenntest ist das Speichern/Aktualisieren einer Variable mit dem Datum des aktuell abgelaufenen Batch-Import.
Dadurch ergibt sich eventuell ein besseres/erweitertes Handling bei den Pruefungen die nach erfolgreichem Batch ablaufen.
Da geht noch was.
Hi quiptime, danke für die
am 02.09.2013 - 09:13 Uhr
Hi quiptime,
danke für die Anregung.
Nun hat der Thread schon Wirkung gezeigt, ich bin mal wieder motiviert, an der Stelle am eigenen Projekt weiter zu machen statt immer nur Kundenprojekte... ;-)
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de