- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > ASP, PERL, CGI, C und alles andere
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


ASP, PERL, CGI, C und alles andere Wolle ma net so sein. Obwohl Perl, ASP, C und TCL zu den minderwertigen Internet-Skriptsprachen zählen, dürfen ab sofort hierzu auch Fragen gestellt werden. ;)

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-05-2004, 14:16
Matthew1782
 Newbie
Links : Onlinestatus : Matthew1782 ist offline
Registriert seit: Apr 2004
Beiträge: 4
Matthew1782 ist zur Zeit noch ein unbeschriebenes Blatt
Question Probleme mit Perl Skript / Skript-Performance?

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:

#!/usr/bin/perl -w
use strict;
$/ = qq{"\$"\t""\t""\n};
my $inputfile = 'C:\test.asc';
open A, $inputfile or die "Cannot open '$inputfile': $!";

while ( <A> ) {
my ($file) = /\n.*?"(.*?)"/ or next;
open B, "> $file.csv"
or warn( "Cannot open '$file': $!" ), next;
print "[DEBUG] '$file': open ok\n";
chomp $_;
print B $_;
close B or warn( "Cannot close '$file': $!" ), next;
print "[DEBUG] '$file': close ok\n";
}
__END__


Eine Test-Datei (hier z.B. test.asc) könnte folgenden Inhalt haben (zwischen den ""
befinden sich immer Tab-Vorschübe, keine Leerzeichen!):

"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.

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
Mit Zitat antworten
  #2 (permalink)  
Alt 10-05-2004, 20:17
Byteandi
 Member
Links : Onlinestatus : Byteandi ist offline
Registriert seit: Dec 2003
Ort: Berlin
Beiträge: 253
Byteandi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

Ich hab solche Datenmengen noch nicht probiert, gehe aber fest davon aus das 500MB zuviel sind, es waere besser wenn du die datei mit sysopen oeffnest und das ganze dann (5000 oder mehr) byteweise mit read ausliest.

selfhtml


Byteandi
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
belbit Ticketcenter-Script ansehen belbit Ticketcenter-Script

Verwalten Sie Supportanfragen zuverlässig im Web2.0-Stil anstatt per E-Mail - inkl. Überprüfung, ob Antworten gelesen wurden und mehr.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Ticketsystem
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

24.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:45 Uhr.