Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6071[/thread]

große Dateien in mehrere splitten



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
renee
 2004-02-12 09:56
#80028 #80028
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich habe eine große Textdatei (~3,5GB), in der sehr viele Datensätze stehen. Diese Datensätze enden mit //.

So sehen die Datensätze aus:
Code: (dl )
1
2
3
4
5
6
ID dummy_id
AC ac_one
//
ID dummy2
AC ac2
//


Ich habe einen Parser geschrieben, der die Datensätze auswerten soll. Bei kleineren Dateien funktioniert das auch prima, aber bei dieser großen Datei funktioniert das nicht mehr.
Jetzt möchte ich diese große Datei in mehrere kleine Dateien aufteilen, wobei jeder Datensatz komplett bleiben muss. Wie mache ich das am besten??\n\n

<!--EDIT|renee|1076572659-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
kabel
 2004-02-12 10:47
#80029 #80029
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
wenn die immer so aussehen, dann schreib doch einfach ein zweites perl-skript, dass die datei alle 3*n zeilen splittet und in fortlaufend nummerierten "preparsed" dateien speichert. bei der gelegenheit kannst du den trenner entfernen, der ist hier sinnlos.

oder im gleichen skript, wobei der "preparser" immer den trenner entfernt, aber nur bei bedarf die datei spaltet (z.b. bei > 100MB).
die dateinamen wandern dann in ein array, auf das der zweite teil zugriff hat.
-- stefan
esskar
 2004-02-12 11:50
#80030 #80030
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ließt du die 3,5 GB in ein Array?
oder liesst du zeile für zeile!
renee
 2004-02-12 11:58
#80031 #80031
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich lese Blockweise (Trenner //) ein. Dann pushe ich den Block in ein Array. Habe es mittlerweile so gelöst, dass ich alle 30000 Blöcke mit dem Array weiterarbeite, dann die Elemente aus dem Array lösche und so weiter...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ptk
 2004-02-12 12:07
#80032 #80032
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Wenn du perl mit USE_LARGE_FILES baust, sollte die grosse Datei eigentlich kein Problem darstellen.
renee
 2004-02-12 12:19
#80033 #80033
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Könntest Du das bitte genauer erläutern?!?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ptk
 2004-02-12 12:51
#80034 #80034
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Auf 32-Bit-Betriebssystemen gibt es beim Dateizugriff ueblicherweise eine Beschraenkung auf 2GB. Beim Compilieren von perl kann diese Beschraenkung umgangen werden, wenn die Option -Duselargefiles verwendet wird und das Betriebssystem ueberhaupt large-file-support besitzt. Mit "perl -V" kannst du erkennen, ob dein perl damit bereits uebersetzt wurde. Bei mir findet sich z.B. "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" und "Compile-time options: USE_LARGE_FILES".
renee
 2004-02-12 13:05
#80035 #80035
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ist schon gesetzt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Relais
 2004-02-12 13:33
#80036 #80036
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
schon mal mit Tie::File probiert?\n\n

<!--EDIT|Relais|1076585605-->
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
ptk
 2004-02-12 14:17
#80037 #80037
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Relais,12.Feb..2004, 12:33]schon mal mit Tie::File probiert?[/quote]
Lieber nicht. Eine <>-Schleife duerfte in diesem Fall *wesentlich* effizienter als Tie::File sein. Siehe auch hier
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2004-02-12 09:56.