Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Doppelte Datensätze aus der Datenbank löschen?!?!?

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
michael puh
Gast





BeitragVerfasst am: 12. Nov 2002 12:20   Titel: Doppelte Datensätze aus der Datenbank löschen?!?!?

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...
 

mih
Gast





BeitragVerfasst am: 12. Nov 2002 14:14   Titel: 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?
 

michael puh
Gast





BeitragVerfasst am: 12. Nov 2002 15:09   Titel: 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 )
bye
 

mih
Gast





BeitragVerfasst am: 13. Nov 2002 18:09   Titel: 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.
 

Descartes
Gast





BeitragVerfasst am: 14. Nov 2002 22:58   Titel: Re: Doppelte Datensätze aus der Datenbank löschen?!?!?

Ein Fall für http://www.iks-jena.de/mitarb/lutz/usenet/sql.html#Doppelt 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.
 

michael puh
Gast





BeitragVerfasst am: 16. Nov 2002 14:16   Titel: 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.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy