2017-04-14 4 views
-1

Hallo ich habe zwei Dateien wie folgen aus: (mit Millionen Zeilen)SQL vs Python Ansatz zu überprüfen Duplikate

(1º) 
AAA 
BBB 
CCC 

(2º) 
AAA 
CCC 
DDD 

Also, was soll schneller sein, wenn ich überprüfen will, welche Zeilen in der ersten Datei sind, die nicht in der zweiten Datei? Sollte ich alle diese Daten in eine Tabelle setzen und dann eine Abfrage machen oder sollte ich Python dies tun lassen?

This is the output i want: 
(3º file) 
AAA 
BBB 
CCC 
DDD 

Vielen Dank!

+0

Umm ... Ihre Ausgabe stimmt nicht überein, wie ich Ihre Frage interpretiere. Möchten Sie die Vereinigung von File1 + File2 (was Ihre Ausgabe sagt) oder File1-File2 (was nur BBB wäre) bekommen? Hinweis: Wenn Datei1 und Datei2 keine internen Duplikate haben, löscht set() Duplikate. Wenn ich https://wiki.python.org/moin/TimeComplexity richtig lese, sollte dies O (len (file1) + len (file2) sein, was das Beste ist, was Sie tun werden, da es das gleiche große O ist Wenn Sie Ihre Dateien sortiert haben, können Sie so streamen, dass Ihr Speicherbedarf O (1) ist. – Foon

Antwort

1

In Python können Sie ein Set verwenden und Set-Operationen für dieses ausführen, wie das Addieren von ihnen, das Ermitteln der Schnittmenge und dergleichen.

Ich würde sagen, verwenden Sie einen Satz in Python, um Ihr Ergebnis zu erhalten. Im Folgenden erhalten Sie das von Ihnen erwähnte Ergebnis.

first =set(['AAA','BBB','CCC']) 
second = set(['AAA','CCC','DDD']) 
third = first.union(second) 

print(third) 

Wie für Ihre Frage, was wäre schneller, das hängt von Ihren Daten ab. Wenn das in den Speicher passt, wäre der Python-only-Weg wahrscheinlich schneller.