Thread Probleme mit Perl-Skript und der Skriptperformance
(14 answers)
Opened by Gast at 2004-05-10 16:28
Hallo zusammen!
Habe ein Problem mit einem Perl-Skript: Eine Datenbank-Export Datei (ascii-Datei) mit ca. 15.000 Datensätzen und einer Größe von ca. 500Mb, bei welcher sich zwischen jedem Datensatz eine Zeile mit einem $-Zeichen als Trennhinweis befindet, möchte ich in jeden einzelnen Datensatz zerlegen/zerschneiden lassen (also in ca. 15.000 einzelne Dateien). Dazu nimmt das Script einfach den Text zwischen zwei Trennzeilen und fügt diesen in eine leere, neu-erstellte Datei ein, deren Name sich aus der zweiten Zeile eines jeden Datensatzes ergibt! Nun das Skript: Code: (dl
)
1 #!/usr/bin/perl -w Eine Test-Datei (hier z.B. test.asc) könnte folgenden Inhalt haben (zwischen den "" befinden sich immer Tab-Vorschübe, keine Leerzeichen, wie es im Posting der Fall ist!): "beginn erster Datensatz" "" "" "text" "" "" "texttexttexttetx text text" "" "" "texttext text" "" "98387" "text, text" "" "" "text" "" "" "" "" "" "text" 0.00 0.00 "$" "" "" "" "" "" "mögliche Überschrift zweiter Datensatz" "" "" "" "" "" "texttext text" "5330146514" "" "" "" "" "text, text" "" "" "" "" "" "text" "30.06.1999" "" "$" "" "" "" "" "" "mögliche Überschrift dritter Datensatz" "" "" "" "" "" "texttext text" "5330146514" "" "" "" "" "text, text" "" "" "" "" "" "text" "30.08.2000" "" "$" "" "" "" "" "" "mögliche Überschrift vierter Datensatz" "" "" "" "" "" "texttext text" "5330146514" "" "" "" "" "text, text" "" "" "" "" "" "text" "30.08.2000" "" "$" "" "" Wenn ich obiges Script nun bei einer kurzen Test-Datei ausführe funktioniert es auch wunderbar und ich erhalte 4 Dateien mit den passenden Dateinamen (jeweils die zweite Zeile eines Datensatzes). Nun jedoch meine Fragen: 1. Wenn ich versuche das Script über die große 500Mb-Datei laufen lassen, bricht es nach längerer Zeit ab und meldet 'Die Batch-Datei konnte nicht gefunden werden!'. Woran könnte das liegen? Weitere Fehler-Meldungen werden nicht ausgegeben und Dateien werden auch nicht erstellt! 2. Wie muss ich die Variable für die Trennzeile definieren, damit alle möglichen Varianten der Trennzeilen abgedeckt werden, z.B.: "$" "" "" "$" "" "" "" "$" "" "" "" "" bisher wird ja nur "$" "" "" als Trennzeile erkannt. Weiss jedoch nicht, wie man diese Zeile möglichst Variabel gestalten könnte. 3. Kann es sein, dass dieses Skript zu Speicheraufwendig arbeitet? Habe jedoch keine leider keine Ahnung, wie man es optimieren könnte :-( Über Antworten zu den Fragen würde ich mich freuen! Vielen Dank fürs Lesen und eventuelle Antworten! Matthias edit renee: [code]-Tags spendiert...\n\n <!--EDIT|renee|1084192585--> |