Announcement

Collapse
No announcement yet.

grosse textdatei einlesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • grosse textdatei einlesen

    hallo forum,
    ich habe 2 fragen bzgl. dem einlesen von textdateien:

    1. welche methode ist die beste/schnellste, um textdateien > 200mb einzulesen? die textzeilen sollen dabei/danach auseinandergenommen und in einer oracle db abgelegt werden. arbeitsspeicher ist genügend worhanden.

    2. die textdatei stammt aus einem nicht windows system und enthält unterschiedliche umlaut-chars. SeekEof(f) bricht nach dem ersten auftreten einer zeile, die ein fremdchar für 'ö' enthält, ab. kann man das umgehen, indem man die umlaute vorher umkonvertiert? wenn ja, wie? oder sollte man die datei sowieso nicht mit 'readln(f,s)' einlesen?

    danks..

  • #2
    <br>Hi,...
    <br>
    <br>ich habe gute Erfahrungen betreffend der Geschwindigkeit mit BlockRead gemacht (damals mit BP). Wenn also genügend Speicher vorhanden ist kann man die > 200 MB Textdatei in kleinen 64 KB Blöcken in den Speicher laden. Danach kann man die Blöcke nach Zeilen durchsuchen und diese in den Oracle Server schreiben.
    <br>
    <br>MfG
    <br>P

    Comment


    • #3
      Ich würde eine TRichEdit-Komponente nehmen:
      (Weil Deine Dateien offensichtlich größer als 64k werden können, geht kein TMemo!)

      MyRichEdit.Lines.LoadFromFile(FilenameEdit1.FileNa me);<br>
      ProgressBar1.Max:=MyRichEdit.Lines.Count+1; <br>
      for i:=0 to MyRichEdit.Lines.Count-1 do begin <br>
      SortiereZeile(MyRichEdit.Lines[i]);<br>
      ProgressBar1.StepIt; // es arbeitet...<br>
      end;<br>

      Ich hoffe, es hilft

      Comment


      • #4
        Hallo,

        wenn die Daten (Spalten) dieser Textdatei durch ein Trennzeichen unterteilt werden, würde ich den Zugriff über den <i>Microsoft Text-Treiber</i> (ODBC) versuchen. In diesem Dialog kann auch der Zeichensatz definiert werden, so dass zum Beispiel der Datenimport UNIX -> Win32 problemlos möglich ist (d.h. dank dem ODBC-Treiber kann die Textdatei direkt als "Datenbanktabelle" angesprochen werden). Ich setze diesen Weg ein, um Daten von einer Uralt-INFORMIX-Datenbank unter UNIX über eine Textdatei in eine SQL Server 7-Datenbank unter Windows 2000 zu schaufeln

        Comment

        Working...
        X