Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: platzebo am 29.11.11 - 16:11:29

Titel: Problem beim Lesen einer großen Textdatei
Beitrag von: platzebo am 29.11.11 - 16:11:29
Hallo, ich habe eine Textdatei mit 2,7GB.
Ein Datensatz (Zeile) darin ist in etwa 1kb groß.
Nun starte ich einen Agent, der diese Datei Zeile für Zeile ausliest.
Das klappt auch bis zur Zeile 2.1xx.xxx.
Ab dann wird jede Zeile falsch gelesen - sprich - ich bekomme nicht die ganze Zeile geliefert sondern nur einen Teil. Es kommt an dieser Stelle kein 0D 0A vor. Gibt es da eine 2GB Grenze? Hatte dieses Problem schon jemand? Wie kann man das lösen? Vielen Dank
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: marschul am 29.11.11 - 17:09:54
Mit welcher Methode liest du denn aus? Sequenzielles Input oder via Read/ReadText im NotesStream? Bei letzterem taucht so etwas wie eine 2GB-Grenze durchaus in der Hilfe auf...
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: m3 am 29.11.11 - 22:13:59
Das "wie" waere hier relevant. Wenn Du alles auf einmal liest, ist bei 2 GB endgueltig Schluss.
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: pram am 30.11.11 - 00:13:09
ich denke, dass die meisten Fileoperationen in Notes ein 2GB (bzw 4GB) Problem haben, da hier fast immer ein LONG als FilePos/FileSize etc verwendet werden.

Gruß
Roland
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: koehlerbv am 30.11.11 - 00:24:18
Wir können / müssen jetzt abwarten, was der Namenlose (den Nick muss man wohl lesen als "ich werde gefallen / gemocht werden") zu seinem Verfahren genaueres schreibt. Ich tendiere auch dazu, dass die Grenzen aus den genannten Gründen erreicht werden.

Viel interessanter wäre es aber doch - wenn man zu einer wirklichen Lösung kommen will - wenn wir erfahren würden, was der Fragesteller eigentlich erreichen will. Was man deuten kann: Aus System x kommen Daten, mit denen Notes / Domino etwas anfangen soll. Und erst bei dieser Fragestellung beginnt es, wirklich interessant zu werden. Alles andere ist "klein klein", technisches Zeugs (was erst später bei der Suche nach Lösungen eine Rolle spielen darf) etc.

Also: "platzebo", sag an, was Du eigentlich willst. Dann lohnt es sich, Gedanken zu machen.

Bernhard
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: flaite am 30.11.11 - 03:18:01
Warum zerteilst du das File vorher nicht mit einer anderen Programmiersprache in 2 Teile?
http://stackoverflow.com/questions/546508/how-can-i-split-a-file-in-python
Oder mit einem Tool.
http://www.soft-ware.net/dateimanagement/datei-splitter/index.asp
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: platzebo am 30.11.11 - 07:29:12
Guten Morgen und vielen Dank für die zahlreichen Rückmeldungen :)

ich bekomme von einem Host die Daten geliefert und muß die auf x Datenbanken verteilen.

Wir lesen die Datei wie folgt aus:

Open "E:\Daten\adressg.txt" For Input Access Read As #fh
Line Input #fh, satz

Auf dem Server habe ich auch keine Möglichkeit einen Filesplitter zu installieren - an diese Möglichkeit dachte ich auch schon.

Ligrü aus Linz

Mike ;)
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: flaite am 30.11.11 - 11:41:33
Hallo Mike,

mit Java in LotusNotes hast Du diese Probleme nicht. Vielleicht kannst Du diesen Agenten in Java umschreiben.
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: Demian am 01.12.11 - 10:02:51
Moin,

wenn die Datensatzlänge bekannt und fix ist hilft dir vielleicht die Funktion/das Statement "Seek" weiter.

Damit kannst du dir die letzte "Dateiposition", die du ausgelesen hast speichern um zu einem späteren Zeitpunkt mit dem Auslesen ab dieser Stelle zu beginnen. Also kannst du so den auszulesenden Teil auf eine Größe von XY reduzieren pro Lauf.

Hier hatte ich damals Seek "entdeckt":
http://atnotes.de/index.php/topic,35763.0.html (http://atnotes.de/index.php/topic,35763.0.html)

Gruß
Demian
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: platzebo am 01.12.11 - 10:36:59
Danke für den Tip - leider ist die Satzlänge nicht konstant
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: Demian am 01.12.11 - 10:45:56
Wobei das mit der Satzlänge bei Line Input eigentlich auch keine Rolle spielt, wenn du dir danach die Dateiposition wegspeicherst.

Du hast ja dann immer den ganzen Satz eingelesen und kannst dir danach die "Position" speichern und beim nächsten Mal da anfangen.
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: Thomas Schulte am 01.12.11 - 11:28:43
Probier mal aus das Ganze statt mit File mit der NotesStream Klasse zu lösen.
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: platzebo am 01.12.11 - 13:09:55
Hy Thomas,

vielen Danke - das war die Lösung *freu*

und ganz nebenbei ist es auch noch schneller :)

Testbasis = 1,8 GBDatei
Line Input -> 3:24
Stream -> 2:01

Schönen Tag noch

ligrü mike
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: pram am 01.12.11 - 16:14:40
Achtung, ganz ist es noch nicht gelöst:
Zitat
Hallo, ich habe eine Textdatei mit 2,7GB....
Zitat
...Testbasis = 1,8 GBDatei
und bei NotesStream.readText steht in der Hilfe definitv was von einem 2GB Limit:
Zitat
Defaults to the entire stream to a maximum of 2GB.
(wobei hier nicht klar hervorgeht, ob der Stream max 2GB haben darf oder ein einzelner Lesevorgang nicht mehr als 2GB lesen kann)
Titel: Re: Problem beim Lesen einer großen Textdatei
Beitrag von: platzebo am 02.12.11 - 07:56:14
Guten Morgen,

doch - es ist gelöst - zumindest für mich ;)

Die 2GB Grenze gibt es nur, wenn man nicht zeilenweise liest. Beim zeilenweisen Lesen war das Lesen der 2,7GB Datei bis zur letzten Zeile kein Problem. Ich habe den Test auf der 2,7GB Datei durchgeführt. Da ab 2GB jedoch die besagten Probleme auftreten habe ich beim Performancetest nicht bis zum Ende der Datei gelesen um ein aussagekräftiges Ergebnis zu bekommen.

Ligrü Mike

Nachtrag:

Die Trennzeichen chr(10) und chr(13) müssen nach dem Einlesen extra weggschnippelt werden