Verarbeitung großer CSV Datei führt zum aufhängen
22.10.2018 07:48:57
Martin
ich habe folgendes Problem und hoffe, dass man mir hier helfen kann.
Ich habe eine csv Datei mit 1,8 GB Dateigröße. Sie hat 11,8 Mio Zeilen.
Die Inhalte sind jeweils mit einer # voneinander getrennt, also in folgender Form
ABC#DEF#GHI
usw.
Da ich diese Anzahl an Zeilen nicht nach Excel importieren kann möchte ich die csv Datei nun zeilenweise durchgehen und alle Zeilen, die "#99#99991231#" beinhalten in eine neue CSV Datei schreiben. (Ich könnte die Zeile dann theoretisch auch direkt nach Excel importieren, aber mir reicht es, eine verdichtete CSV Datei zu erhalten)
Laut Suche mit Ultraedit in der CSV Datei gibt es gut 800.000 Zeilen in denen der String "#99#99991231#" enthalten ist.
Ich versuche dies mit folgendem Code, den ich bereits aus Excel und auch schon mal aus Access heraus aufgerufen habe (jeweils Version 2010).
Sub TxtDateiZeilenweiseAuslesenUndNeueCsvSchreiben()
Dim strInput As String
'Die Quelldatei
Open "D:\Test\ABC.csv" For Input As #1
'Die Zieldatei
Open "D:\Test\ABCNeu.csv" For Output As #2
Do While Not EOF(1)
Line Input #1, strInput
If InStr(1, strInput, "#99#99991231#") Then
Print #2, strInput
End If
Loop
Close #1
Close #2
End Sub
Ich habe es mal mit 500 Zeilen ausprobiert, das funktioniert gut und in der neuen Csv Datei sind nur noch die Zeilen enthalten, die den Suchstring "#99#99991231#" beinhalten.
Wenn ich Schrittweise die Verarbeitung mit F8 durchgehe sehe ich aber, dass die Verarbeitung der Zeile
Line Input #1, strInput
zum aufhängen der Anwendung führt, wenn ich versuche die komplette 1,8 GB große Datei zu verarbeiten.
Es wird nichts in die neue Datei rein geschrieben und Excel gibt "keine Rückmeldung" zurück und ist nur noch per Taskmanager zu beenden...
Kann mir jemand einen Tip geben, wie ich die Verarbeitung durchlaufen lassen kann?
Gruß Martin