Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] nicht vorhandene Datensätze löschen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] nicht vorhandene Datensätze löschen

    Hey!

    Ich sitze hier an einem kniffeligen Problem mit 17.000 Datensätzen und würd mich freun, wenn jemand vllt einen Lösungsansatz/weitere Ideen für mich hat

    Gegebenheiten:
    Ich importiere eine Artikeldatei per CSV die folgender maßen behandelt wird:
    - wenn EAN in DB vorhanden update Preis
    - wenn EAN in DB nicht vorhanden lege den Artikel neu an
    - wenn keine EAN in der Datei vorhanden mache nix

    Es besteht das Problem, dass EANs nicht mehr in der Datei verfügbar sind (also Artikel in der Datei gelöscht wurden). Diese sind allerdings noch in der Datenbank gespeichert. Also suche ich nach einem Script, welches mir die (in der Datei) nicht vorhandenen Artikel löscht. Dieses möchte ich per CRON jeden Abend laufen lassen (Performance).

    Meine bisherigen Lösungen:
    - EANs in beim Import in einer zusätzlichen Tabelle speichern
    1. DELETE FROM tabelle WHERE ean != '123' OR ean != '456' (also so ähnlich)
    2. ein Array mit den EANs füllen und danach ein DELETE wie hier beschrieben

    Meine Frage:
    Weiss jemand vllt noch eine andere Möglichkeit des löschens und wenn nicht, welche Lösung ist am besten für die Performance?

    Danke schon mal für Eure Hilfe

  • #2
    Im Wesentlichen besteht der ganze Aktualisierungsvorgang aus vier Schritten.

    a) LOAD artikel.csv in eine Tabelle temp_artikel

    b) UPDATE artikel
    SET preis = ...

    => wenn der EAN existiert

    c) INSERT INTO artikel

    => wenn der EAN neu ist

    d) DELETE FROM artikel
    WHERE ean NOT IN ( SELECT ean FROM temp_artikel );


    Im letzen Schritt d) werden alle Artikel gelöscht, die nicht mehr in der "neuen" Artikeltabelle (temp_artikel) vorhanden sind.

    Grüße
    Thomas

    Kommentar


    • #3
      Thats it!

      Ich habs mal mit einem "Lite Datensatz" durchgespielt - sieht ziemlich gut aus.
      Danke!!!

      Kommentar

      Lädt...
      X