Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Duplikate löschen (https://www.delphipraxis.net/170809-duplikate-loeschen.html)

Namenloser 4. Okt 2012 05:41

Datenbank: SQLite • Version: 3 • Zugriff über: SQLite

Duplikate löschen
 
Ich habe hier einige XML-Daten in eine SQLite-Datenbank importiert, die ursprünglich von einer Website ausgelesen wurden. Der Parser hatte allerdings ein paar Macken, weshalb manche der Daten fehlerhaft sind... also wohl ein typisches Szenario.

Ein konkretes Problem ist gerade, dass manche Datensätze mehrfach vorhanden sind – also die Datensätze sind wirklich identisch, jede Spalte ist exakt gleich.

Jetzt ist die Frage: Wie werde ich die Duplikate wieder los? Ich steh da gerade auf dem Schlauch... es gibt ja keine Möglichkeit, die identischen Datensätze voneinander zu unterscheiden – wie kann ich dann per SQL nur bestimmte löschen? Es soll ja pro identischer Gruppe immer ein Eintrag übrig bleiben. Hat da zufällig jemand ein Patentrezept?

Danke im Voraus.

Furtbichler 4. Okt 2012 05:43

AW: Duplikate löschen
 
Du hast das Problem nur, weil Du dir keinen PK definiert hast.
Versuche per SQL mit
Code:
select distinct * from TabelleMitDenDuplikation
die eindeutigen Datensätze in eine zweite Tabelle zu bugsieren, lösche die Originaltabelle und kopiere wieder zurück.

Namenloser 4. Okt 2012 05:59

AW: Duplikate löschen
 
Ah, super, das hat geklappt, danke :thumb:
Das ging ja schnell...

Btw: Zu den Keys: Hatte ich absichtlich zunächst nicht angelegt, weil ich nicht wollte, dass der Import-Prozess wegen irgendeinem nicht abgefangenen Fehler abbricht und ich alles noch mal von vorn anfangen muss... dachte mir, ich lese das Zeug erst mal ein, und kümmer mich dann hinterher um mögliche Probleme.

Perlsau 4. Okt 2012 09:40

AW: Duplikate löschen
 
Zitat:

Zitat von NamenLozer (Beitrag 1185604)
Btw: Zu den Keys: Hatte ich absichtlich zunächst nicht angelegt, weil ich nicht wollte, dass der Import-Prozess wegen irgendeinem nicht abgefangenen Fehler abbricht und ich alles noch mal von vorn anfangen muss... dachte mir, ich lese das Zeug erst mal ein, und kümmer mich dann hinterher um mögliche Probleme.

Eine Möglichkeit zur Vermeidung deines Duplikat-Problems bestünde darin, die Daten aus der XML-Datei zuerst in eine Testtabelle einzulesen, die automatisch einen fortlaufenden PK erzeugt (AutoInc bzw. Trigger und Generator). Danach durchsuchst du deine Testtabelle auf Doppelte, wirfst dieselben raus und kopierst deine Daten, die ja vermutlich einen eigenen PK mitbringen, in die "richtige", dafür vorgesehene Tabelle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz