Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1652to1656
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Verarbeitung großer CSV Datei führt zum aufhängen

Verarbeitung großer CSV Datei führt zum aufhängen
22.10.2018 07:48:57
Martin
Hallo,
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

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verarbeitung großer CSV Datei führt zum aufhängen
22.10.2018 09:08:19
SF
Hola,
zur Info...
https://ms-office-forum.net/forum/showthread.php?t=355176
Gruß,
steve1da
Verarbeitung großer CSV Datei führt zum aufhängen
22.10.2018 09:43:51
Martin
Wie soll mir dein Kommentar jetzt weiterhelfen steve1da?
Ich habe das Problem auch in einem weiteren Forum eingestellt. Aber da keine Lösung bisher erhalten?!?!
AW: Verarbeitung großer CSV Datei führt zum aufhängen
22.10.2018 09:46:14
SF
Hola,
das soll anderen insofern weiterhelfen, als dass sie jetzt wissen, wo du die Frage noch gestellt hast. So kann man wenigstens schauen, ob dir schon geholfen wurde...oder arbeitest du gerne umsonst?
Gruß,
steve1da
Fileformat überprüft?
22.10.2018 09:58:19
EtoPHG
Hallo Martin,
wenn deine 500 Zeilen-Datei funktioniert, stellt sich die Fragen, wie du diese erstellt hast.
Ich habe den Verdacht, dass deine Original-Datei (1.8GB) eine Unix-Datei ist,
dass deine gekürzte-Datei ein Extract in einer Windows-Datei ist.
Unix kennt Linefeed als Record-Trenner, Windows kennt Carriage-Return/LineFeed als Recor-Trenner.
Das würde erklären, warum bei besagtem Line Input OriginalDatei# gestoppt wird. Für eine Unix-Datei würde dieser Befehl versuchen die gesamten 1.8GB als einen Record zu verarbeiten!
Gruess Hansueli
Anzeige
AW: Fileformat überprüft?
22.10.2018 10:34:24
Martin
Hallo Hansueli,
danke, super Hinweis. Wenn ich die große Datei mit Ultraedit öffne, wird unten "UNIX" angezeigt.
Die kleine Datei erstelle ich, indem ich 500 Zeilen aus der UNIX csv Datei einfach in ein neues Textblatt in Ultraedit rein kopiere und diese als csv speichere. Wenn ich diese öffne steht unten nicht mehr UNIX, sondern DOS. Ich habe das in der Standardformatierung von Ultraedit gespeichert, die UE mir vorgibt wenn ich eine csv speichere.
Weißt du ob es in VBA die Möglichkeit gibt dieses Format abzuprüfen und falls es das UNIX Format ist auf das Windows Format abzuändern?
Gruß Martin
Anzeige
Verdacht bestätigt: Originaldatei ist Unix!
22.10.2018 10:44:57
EtoPHG
Hallo Martin,
Auch wenn es lange dauern wird, versuche mit UltraEdit die Originaldatei als DOS/Windows Datei abzuspeichern und benutze dann die konvertierte Datei als Input für dein VBA.
Es gibt keine Standard-VBA Methoden oder API-Routinen um den Filetype festzustellen. Zudem kommen noch das ganze Zeichen-Codierung-Gedöns (ASCII, ANSI, UTF-8 etc...) dazu.
Gruess Hansueli
AW: FileFormat: 2-4 bytes
22.10.2018 10:55:35
Fennek
Hallo,
viele Dateiformate, z.B. jpg, haben eine spezifischen Kodierung in den ersten 2 bytes. Diese kann man mit "OPEN file FOR BINARY as #1" ohne den Rest der Datei auslesen.
Für die hier diskutierte Frage wäre ein kleiner Test sinnvoll.
mfg
Anzeige
Codierung hat nix mit record-seprtr am Hut! (owT)
22.10.2018 11:08:04
EtoPHG

AW: Verdacht bestätigt: Originaldatei ist Unix!
22.10.2018 11:01:12
Martin
Hallo Hansueli,
danke für deine Hilfe!
Ich konnte mit Ultraedit vom UNIX in das DOS Format konvertieren.
Jetzt funktioniert die Verarbeitung!
Wär ich nie drauf gekommen. Danke für die Hilfe!!!!
Gruß Martin
Keine Ursache. Bitte im anderen Forum schliessen!
22.10.2018 11:10:54
EtoPHG

AW: Keine Ursache. Bitte im anderen Forum schliessen!
22.10.2018 11:15:05
Martin
Hab ich gemacht, danke!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige