Grosses File nach Spalte sortieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

ich suche nach einer möglichst effizienten Weise ein File zu sortieren: Die Files, um die es geht sind rel. groß (+/- 10 GByte) und in Spalten aufgebaut. Zu sortieren ist nach einer Spalte im jeweiligen File, die eindeutige Zahlen enthält. Die Files sind einfache Textfiles (binäre Alternative gäbe es auch, aber die lassen wir mal beiseite ...). Und die Ausgabefiles sollen das selbe Format haben, nur eben aufsteigend nach den Zahlen sortiert.

In einem ersten Schritt das File durchforsten und ein Dict mit Schlüssel (die oben genannte Zahl) und Zeilennummer erstellen. Doch dann? Das File wieder und wieder zu durchlaufen, zum eigentlichen Sortieren, ist keine gute Idee. Mit seek springen ist zwar möglich, doch die Zeilenlänge ist nicht unbedingt konstant.

Kann mir jemand 'nen Tipp geben?

Gruß,
Christian
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

http://code.activestate.com/recipes/576755/

Wobei dann "key" ne Funktion ist, die dann die erste Spalte jeder Zeile sucht.

Es werden kleine Päcken sortiert und diese dann zusammengefügt, das geht recht speichereffizient.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

Danke! (Auf die Idee da zu suchen hätte ich auch kommen müssen ...)

Gruß,
Christian
Antworten