Geist (ein Armer): Große Daten effektiv einlesen

Beitrag lesen

Ich hatte zunächst versucht die Datei zeilenweise einzulesen und anschließen aus der Zeile jedes Wort zu extrahieren und in die DB zu übertragen, jedoch kam es dann zu einer Zeitüberschreitung.

Kann mir jemand helfen?

Das Script muß sich die letzte eigelesene Zeile merken, sich danach selber aufrufen und ab der letzten Zeile +1 weitermachen.

Und das Ganze so lange, bis die Datei komplett drin ist.

Ist im Prinzip kein Hexenwerk. Findest Du sicher auch im Netz viele Anwendungsbeispiele.

Grüße, Steffen

Nein! Das ist nicht so einfach! Wenn man Zeilenweise einliesst und ein Abbruch  statt findet (Datei geschlossen), wir man den Dateizeiger beim öffnen nicht so einfach setzen können - ich würde es eher mit blockweisen Lesen versuchen.

Gut hast du zufällig ein Script oder kannst du mir ein paar hilfereiche Funktionen nennen?
Ich hatte bisher noch nie mit großen Daten zu tun und bin daher nicht so bewandert was das angeht.
Mit $dban->insert($wort); wird das Wort in die Datenbank übertragen wie müsste ich den Rest gestalten? Die Funktion getword($str); liefert das Wort aus der Zeile bzw. ich müsste sie dann umschreiben.

Siehe http://www.php.net/manual/de/book.filesystem.php

  • Mit fread() liest du die Daten ein. Z.B. Böcke von 64KByte (Größe kannst
      angeben).
  • Nach einem Abbruch kannst du mit fseek() an eine gewünschte Stelle
      aufsetzen (Anzahl der fread()s und deren Puffergr. merken!).

Die gelesenen Datenblöcke kannst du in Stings und/oder Wörter trennen.
Siehe dazu http://www.php.net/manual/de/book.strings.php.

Wenn du pinnglig sein musst, dann kannst du prüfen, ob am Ende eines
Datenblocks ein Wort geteilt wurde (ein Wort wurde nicht geteilt wenn
am Ende des gelesenen Datenblocks oder am Anfang des Folgebocks ein
Leerz., Tabulator, Return, ... steht).

So long