hallo,
ich stehe vor dem problem alle doppelten einträge in einer datenbank zu löschen.
der primary key ist zwar immer verschieden, aber es kam vor, das hin und wieder ein daten-
satz ein zweites mal hinzugefügt wurde...
mit distinct kann ich doppelte einträge unterdrücken, aber ich brauche genau das gegenteil...
danke, falls jemand helfen kann...
Doppelte Datensätze aus der Datenbank löschen?!?!?
Re: Doppelte Datensätze aus der Datenbank löschen?!?!?
moin,
ganz einfach: tabelle(n) entladen, index erstellen, tabelle(n) neu laden, fertig.
btw: um was für 'ne db handelt es sich?
ganz einfach: tabelle(n) entladen, index erstellen, tabelle(n) neu laden, fertig.
btw: um was für 'ne db handelt es sich?
Re: Doppelte Datensätze aus der Datenbank löschen?!?!?
hi, danke erstmal,
es handelt sich um oracle. was meinst du mit entladen, index erstellen, neu laden?
(bin absoluter db-neuling, also bitte so als ob ich vier jahre alt wäre <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">)
bye
es handelt sich um oracle. was meinst du mit entladen, index erstellen, neu laden?
(bin absoluter db-neuling, also bitte so als ob ich vier jahre alt wäre <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">)
bye
Re: Doppelte Datensätze aus der Datenbank löschen?!?!?
tach auch,
hm, oracle kenn' ich nicht. bei "richtigen" datenbanken (DB2) geht's mit DSNTEP.
als neuling/anfänger aber nicht unbedingt zu empfehlen. man könnte auch 'n kleines programm/script (spufi?) schreiben, das diesen job erledigt, ist allerdings um den faktor 10 bis 15 langsamer.
die sinnvollste methode scheint mir folgende zu sein: den dbadmin fragen, ob er diesen job erledigen kann. geht garantiert am schnellsten und ist am sichersten.
hm, oracle kenn' ich nicht. bei "richtigen" datenbanken (DB2) geht's mit DSNTEP.
als neuling/anfänger aber nicht unbedingt zu empfehlen. man könnte auch 'n kleines programm/script (spufi?) schreiben, das diesen job erledigt, ist allerdings um den faktor 10 bis 15 langsamer.
die sinnvollste methode scheint mir folgende zu sein: den dbadmin fragen, ob er diesen job erledigen kann. geht garantiert am schnellsten und ist am sichersten.
Re: Doppelte Datensätze aus der Datenbank löschen?!?!?
Ein Fall für <a href="http://www.iks-jena.de/mitarb/lutz/usen ... ml#Doppelt" target="_blank"><!--auto-->http://www.iks-jena.de/mitarb/lutz/usen ... <!--auto--> aus de.comp.datenbanken.misc
Wie verhindere und lösche ich doppelte Einträge?
Ein UNIQUE Constraint, wie er in einem primary Key automatisch mit erzeugt wird, verhindert diese Einträge von vorne herein.
Angenommen die Tabelle tab enthält die Felder f1 und f2. Beide zusammen sollen ein Key für die Datensätze sein. CREATE UNIQUE INDEX nix_doppelt ON tab(f1, f2) erstellt einen Constraint. Ist das Problem schon passiert so gibt es zwei Möglichkeiten:
Möglichkeit 1:
CREATE TEMPORARY TABLE xxx AS SELECT DISTINCT * FROM tab;
und dann Rückkopieren des Datenbestandes. Dies ist nicht im laufenden Betrieb möglich!
Möglichkeit 2:
DELETE FROM tab WHERE EXISTS (SELECT * FROM tab t WHERE t.f1 = tab.f1 AND t.f2 = tab.f2 AND t.oid < tab.oid);
wobei hier ein automatischer primary Key der Datenbank benutzt wurde. Wie das heißt, ist der Dokumentation zu entnehmen.
Wie verhindere und lösche ich doppelte Einträge?
Ein UNIQUE Constraint, wie er in einem primary Key automatisch mit erzeugt wird, verhindert diese Einträge von vorne herein.
Angenommen die Tabelle tab enthält die Felder f1 und f2. Beide zusammen sollen ein Key für die Datensätze sein. CREATE UNIQUE INDEX nix_doppelt ON tab(f1, f2) erstellt einen Constraint. Ist das Problem schon passiert so gibt es zwei Möglichkeiten:
Möglichkeit 1:
CREATE TEMPORARY TABLE xxx AS SELECT DISTINCT * FROM tab;
und dann Rückkopieren des Datenbestandes. Dies ist nicht im laufenden Betrieb möglich!
Möglichkeit 2:
DELETE FROM tab WHERE EXISTS (SELECT * FROM tab t WHERE t.f1 = tab.f1 AND t.f2 = tab.f2 AND t.oid < tab.oid);
wobei hier ein automatischer primary Key der Datenbank benutzt wurde. Wie das heißt, ist der Dokumentation zu entnehmen.
Re: Doppelte Datensätze aus der Datenbank löschen?!?!?
danke für die antworten...
select id, count(id) from tbl_x group by customerid having count(id)>1;
hat hervorragende dienste geleistet.
select id, count(id) from tbl_x group by customerid having count(id)>1;
hat hervorragende dienste geleistet.