doppelte einträge verhindern

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

  • doppelte einträge verhindern

    hatten gestern eine vorgezogene weihnachtsfeier, darum fällt mir heute das denken ein wenig schwer.
    wie kann ich bei "LOAD DATA LOCAL INFILE 'datei.csv' usw. verhindern, das doppelte einträge in der csv auch doppelt in die db geschrieben werden.
    gruss
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    Leg vorher auf die Felder, die in Kombination nicht doppelt vorkommen dürfen, einen unique index:

    alter table Tabelle add unique ukey (feld1, feld2, ...)

    Ich weiß nur nicht, ob load data dann mit einem Fehler auf halbem Weg abbricht ...
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      mal antesten
      vielen dank
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Hallo zusammen!

        Ich habe mehr oder weniger das Gleiche Problem wie der Thread-Eröffner, da schließe ich mich doch lieber an als ein neues Thema zu eröffnen

        Es existiert eine CSV-Datei mit mehreren Spalten: Name, Vorname, Email, usw...

        Die Daten daraus sollen in eine MySQL Datenbank gespeichert werden - dabei darf jede eMail-Adresse nur einmal vorkommen (unique).

        Zuerst habe ich es über phpMyAdmin versucht, jedoch hat sich Titus Theorie bestätigt:

        Ist das Feld unique, wird importiert bis die erste Doppelung auftritt, dann sang und klanglos ohne Meldung abgebrochen.

        Ich habe ein Script das die Felder in die Datenbank schreiben kann, natürlich tritt hier das gleiche Problem beim Eintragen auf…

        Da die Datensätze zu umfangreich sind um manuell ranzugehen, soll ein Script die nur einfach vorkommenden Felder in eine MySQL Datenbankschreiben,

        die doppelten Einträge entfernen, jedoch nicht löschen sondern in einer anderen Datei als Protokoll „das gibt es doppelt“ abspeichern.

        CSV – MySQL – Probleme gibt es offensichtlich wie Sand am mehr, aber Lösungen wie Oasen in der Wüste…

        Etwas in der Art habe ich leider nicht gefunden und weiß Gott mehr als „nur“ dieses Forum hier durchsucht.

        Tausend Dank schon mal an die, die sich die Mühe machen, mir evtl. einen Lösungsansatz vorschlagen können oder nützliche (!= http://www.php.net/fgetcsv *grinz*) Links zu dem Thema haben.

        Grüße,

        RZ

        Kommentar


        • #5
          LOAD DATA hat auch das Schlüsselwort IGNORE zu bieten iirc, damit kommen zumindest alle Daten rein, aber wie man jetzt rausfindet, welche doppelt waren...
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            CSV m. PHP auf Doppeltes checken, entfernen, dann in MySQL

            Hallo zusammen!

            [COLOR=silver](Jetzt doch als neuen Thread, das worauf ich geantwortet hatte liegt im falschen Forum, wie ich später (…) festgestellt habe)[/COLOR]

            Es existiert eine CSV-Datei mit mehreren Spalten: Name, Vorname, Email, usw...

            Die Daten daraus sollen in eine MySQL Datenbank gespeichert werden - dabei darf jede eMail-Adresse nur einmal vorkommen (unique).

            Zuerst habe ich es über phpMyAdmin versucht, jedoch hat sich Titus Theorie bestätigt:

            Ist das Feld unique, wird importiert bis die erste Doppelung auftritt, dann sang und klanglos ohne Meldung abgebrochen.

            Ich habe ein Script das die Felder in die Datenbank schreiben kann, natürlich tritt hier das gleiche Problem beim Eintragen auf…

            Da die Datensätze zu umfangreich sind um manuell ranzugehen, soll ein Script die nur einfach vorkommenden Felder in eine MySQL Datenbankschreiben,

            die doppelten Einträge entfernen, jedoch nicht löschen sondern in einer anderen Datei als Protokoll „das gibt es doppelt“ abspeichern.

            CSV – MySQL – Probleme gibt es offensichtlich wie Sand am mehr, aber Lösungen wie Oasen in der Wüste…

            Etwas in der Art habe ich aber leider nicht gefunden und weiß Gott mehr als „nur“ dieses Forum hier durchsucht.

            Tausend Dank schon mal an die, die sich die Mühe machen! …mir evtl. einen Lösungsansatz vorschlagen können, nützliche (!= http://www.php.net/fgetcsv *grinz*) Links zu dem Thema haben, oder passende Suchbegriffe kennen

            Grüße,

            RZ

            Kommentar


            • #7
              doppelte ds wirst du afaik wohl nur durch zeilenweises importieren herausfinden.

              Kommentar


              • #8
                wie wichtig ist dir das protokoll?

                BTW: Lösung steht im anderen thread, daher zusammenführ.

                Kommentar


                • #9
                  Umweg:

                  1. Tabelle ohne Unique Index erstellen

                  2. Daten einlesen

                  3. Diese Query liefert alle mehrfach vorkommenden E-Mail-Adressen:
                  select email, count(*) as anzahl
                  from tabelle
                  group by email
                  having anzahl>1

                  3a. diese hier liefert die Datensätze gleich dazu:
                  select a.*, count(b.id) as anzahl from tabelle a, tabelle b
                  where a.email=b.email
                  group by b.email
                  having anzahl>1
                  damit ist das ausfiltern der Datensätze mit doppelten Mails kein Problem;

                  und nach deren Entfernung kann der Unique Index immer noch gesetzt werden.
                  mein Sport: mein Frühstück: meine Arbeit:

                  Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                  Kommentar

                  Lädt...
                  X