.titleBar { margin-bottom: 5px!important; }

Duplikate in mysql

Dieses Thema im Forum "Allgemeines" wurde erstellt von butz, 6 Juni 2005.

  1. butz

    butz Mitglied

    Registriert seit:
    4 März 2005
    Beiträge:
    311
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Leute,

    ich habe in einer Tabelle in mysql mehrere Felder unter anderem auch das Feld " Id". Dieses Feld soll nun eigentlich der Primary Schlüssel werden, aber durch einen Fehler sind dort jede Menge Duplikate vorhanden. Wie kann ich diese auslesen und löschen?

    Wäre wirklich froh wenn mir jemand helfen könnte eine SQL Anweisung dafür zu erstellen.

    butz
     
  2. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Wieviele Datensätze hast Du denn in der Tabelle ?
     
  3. butz

    butz Mitglied

    Registriert seit:
    4 März 2005
    Beiträge:
    311
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo beta,

    sind nur schlappe 100.000

    butz
     
  4. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    1.) Den gesamten Tabelleninhalt (ohne Struktur!) in einen MySQL-Dump exportieren
    2.) die Struktur der Tabelle in eine neue Tabelle kopieren
    3.) in der neuen Tabelle die Struktur entsprechend anpassen (unique-key setzen)
    4.) Danach den Dump wieder importieren - dabei werden doppelte Einträge weggelassen

    Die Sache mit der neuen Tabelle ist eine reine Vorsichtsmaßnahme - Du sollte auf jeden Fall hinterher zumindest stichprobenweise die Tabelle kontrollieren.
     
  5. butz

    butz Mitglied

    Registriert seit:
    4 März 2005
    Beiträge:
    311
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo beta,

    so ähnlich habe ich mir das schon gedacht, also werde ich mich mal an die Arbeit machen.

    Danke
    butz
     
  6. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Das geht mit phpmyadmin recht fix ... viel Erfolg !
     
  7. butz

    butz Mitglied

    Registriert seit:
    4 März 2005
    Beiträge:
    311
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo beta,

    meinst du das ich das Feld ID als Unique setzen muss? Habe ich gerade getestet und er kopiert dann nur bis zum ersten Duplikat und endet mit der Fehlermeldung das ein Duplikat festgestellt wurde.

    butz
     
  8. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Die Fehlermeldung kann man irgendwie unterdrücken - aber um diese Uhrzeit kann ich Dir aus dem Kopf nicht mehr genau sagen wo - man muß da irgendwo einen @ in den Befehl schreiben.
     
  9. butz

    butz Mitglied

    Registriert seit:
    4 März 2005
    Beiträge:
    311
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo beta,

    ist wirklich schon spät, und viel Lust habe ich auch nicht mehr.
    Werde mal bei Google suchen ob ich etwas finde, wenn es dir wieder einfällt wäre es schön wenn du es hier noch schreiben würdest.

    butz
     
  10. britzelfix

    britzelfix Gesperrt

    Registriert seit:
    28 Mai 2004
    Beiträge:
    1,099
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Braunschweig
    @butz
    da ich annehme, daß Du bei 100.000 Einträgen noch dabei bist,
    hier eine andere Lösung.

    Wir haben meinetwegen eine mysql-table mit:

    Code:
    create table person (id int(4) not null, 
              vorname varchar(60) not null,
              nachname varchar(60) not null,
              telefon varchar(66),
              strasse varchar(66),
              hausnr  varchar(12),
              plz int(5),
              ort varchar(28)
    );
    
    Das heraussuchen der Duplikate geschieht nun mit:
    (meinetwegen auch phpmyadmin)

    Wenn Du alle Duplikate entfernt/geändert hast, kann man Id als Primär-Schlüssel
    definieren (Action bei phpmyadmin), soweit ich mich erinnern kann, sind dann Duplikate ausgeschlossen.


    Gruß
    britzelfix
     
  11. butz

    butz Mitglied

    Registriert seit:
    4 März 2005
    Beiträge:
    311
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    gelobt sei dieses Forum und allen Helfern, denau das war es was ich suchte.

    Perfekt und Vielen Dank

    kann man da auch noch gleich ein "Delete" einfügen? dann sind sie auch gleich gelöscht.

    butz
     
  12. speedy1980

    speedy1980 Mitglied

    Registriert seit:
    13 Okt. 2004
    Beiträge:
    592
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Gehts nicht einfacher? Lösch die ID-Spalte und leg sie neu an mit auto-increment. Dann zählt er selbst hoch. Bei der Gelegenheit kann man beim Anlegen gleich den Primärschlüssel setzen. Mal eben 100000 Sätze exportieren und wieder importieren halte ich für zu viel Arbeit.
     
  13. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Es ging doch darum, doppelte Datensätze rauszufiltern.
     
  14. butz

    butz Mitglied

    Registriert seit:
    4 März 2005
    Beiträge:
    311
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Leute,

    genau darum ging es, die doppelten zu finden und zu löschen.
    Und es ist auch alles perfekt gelaufen, die Duplikate sind gefunden und gelöscht. Interessant war das mein Rechner verdammt am würgen war als er die 100.000 Daten nach Dublikaten untersucht hat.

    Danke noch mal an alle Helfer!
    butz