Dubletten finden und zusammenführen

Goofy

Benutzer
Beiträge
8
Hallo zusammen,

ich habe eine Datenbank, deren Ursprung mehrere Exporte aus Outlook Adressbüchern sind.

Die Daten sind teilweise unvollständig z.B.:


Anrede; Herr; - ; - ;
Vorname: Max; Max; - ;
WeitereVornamen
Nachname: Mustermann; - ; Mustermann
Suffix
Firma
Abteilung
Position
Straßegeschäftlich: - ; Musterstr. 12; - ;
Straßegeschäftlich2
Straßegeschäftlich3
email: Test@Test.de; Test@Test.de; Test@Test.de

Wie kann ich die Daten zusammen führen und eine neue Tabelle erstellen?

Vielen Dank für Eure Hilfe

Goofy
 
Werbung:
das sind unterschiedliche Dinge. Zum einen unterschiedliche Datenbanken. Schlimmer aber, die Daten in dem Stackoverflow-Artikel a) mehrere Datensätze und b) es gibt eine konkrete Regel, was da wie zusammengeführt werden soll. Deine Daten sind schlicht kaputt.

Offenbar ist bei Dir je Feld 3 Werte, mit ; getrennt. Kann es sein, daß da 3 mal was zu importieren versucht wurde?

Du könntest evtl. durch die Daten gehen, die Felder am ; splitten, den längsten Teilstring als valide betrachten und das Feld damit updaten. Ob und wie das in SQL Light geht weiß ich nicht, kenne ich nicht.
 
Mehrfache Datensätze anzeigen und mit Ausnahme einer Zeile löschen

SELECT A.[ID] As [Datensatz-ist-Kandidat-zum-Loeschen],
A.Nachname, A.Vorname, A.`E-Mail-Adresse`, A.Firma

/*-- alternativ: DELETE */

FROM Kontakte As A

Where A.[ID] NOT IN

(SELECT MIN(X.[ID])
FROM Kontakte As X
GROUP BY X.Nachname, X.Vorname, X.`E-Mail-Adresse`, X.Firma)

So könnte ich zumindest mal die Dubletten los werden. Wie kann ich aber die fehlenden Einträge zusammen bringen?
 
Das ist eine Feststellung, aber keine Regel, wie diese Werte zu ermitteln sind. Reichen Zufallswertte aus? Dann wäre es einfach ...
 
Vollständig
Herr, Max, Mustermann, Waldstr. 11, 75155 Köln, test@test.de

Unvollständig
- , Max, Mustermann, - , - , test@test.de
Herr, - , Mustermann, - , 75155 Köln, test@test.de

Ich denke man könnte den ersten gefundenen Eintrag nehmen und um die Werte der anderen ergänzen. Was meinst Du mit Zufallswerten? Werte aus den anderen Zeilen, wobei diese in zufälliger Reihenfolge dem ersten gefunden Eintrag hinzu gefügt wird. Dies wäre auch möglich.
 
in PostgreSQL ginge sowas:

Code:
test=*# select * from goofy ;
 anrede | vorname |  nachname  |  adresse   |    email     
--------+---------+------------+------------+--------------
        | Max     | Mustermann |            | test@test.de
 Herr   |         | Mustermann | 75155 Köln | test@test.de
(2 Zeilen)

test=*# select string_agg(anrede,''), string_agg(vorname, ''), string_agg(nachname,''), string_agg(adresse,''), email from goofy group by email;
 string_agg | string_agg |      string_agg      | string_agg |    email     
------------+------------+----------------------+------------+--------------
 Herr       | Max        | MustermannMustermann | 75155 Köln | test@test.de
(1 Zeile)

test=*#
 
ich sehe grade, der Nachname ist doppelt. Also:
Code:
test=*# select string_agg(distinct anrede,''), string_agg(vorname, ''), string_agg(distinct nachname,''), string_agg(adresse,''), email from goofy group by email;
 string_agg | string_agg | string_agg | string_agg |    email     
------------+------------+------------+------------+--------------
 Herr       | Max        | Mustermann | 75155 Köln | test@test.de
(1 Zeile)
 
Solange du E-Mail eindeutig hast ginge das, sobald du irgendwo 2x Müller hast und nur einer hat eine E-Mail kann das Ergebnis großer Blödsinn werden den du nicht mehr auseinander bekommst.

Edit:
Um das mal zu verdeutlichen, Mitarbeiter am Telefon: "Hallo Herr Müller, ich schicke Ihnen das mal grade per E-Mail, die Adresse sehe ich hier." Kunde: "OK."
 
Zuletzt bearbeitet:
Ich werde die Daten anhand der Mailadresse auseinander nehmen und den Rest per Hand sortieren. Es sind leider ca. 4000 Daten. Wer kann PostgreSQL in SQlite umwandeln?

string_agg müsste group_concat sein.
 
Werbung:
Zurück
Oben