Office: (Office 2013) Textdateiimport macht aus 20MB ein 75MB großes Access File

Helfe beim Thema Textdateiimport macht aus 20MB ein 75MB großes Access File in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, mal ein paar Fragen als absoluter Access Neuling. 1) Ich habe viele Textdatein mit sehr vielen Zeilen und mein Test hat gerade gezeigt das ein... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Tauchmann, 20. November 2016.

  1. Tauchmann Erfahrener User

    Textdateiimport macht aus 20MB ein 75MB großes Access File


    Hallo,

    mal ein paar Fragen als absoluter Access Neuling.
    1) Ich habe viele Textdatein mit sehr vielen Zeilen und mein Test hat gerade gezeigt das ein TXT File mit 20MB Größe im Access DB Format auf über 75MB angestiegen ist. ICh dacht in DB kann man viele Daten "platzsparend" speichern.
    Was mache ich da verkehrt oder ist das normal?

    2) Nun müssen diese Daten noch verarbeitet werden. Mein Excel VBA Code braucht dafür extrem lange. Nun würde mich interessieren ob ein Access SQL Statement Daten im gewünschen Format deutlich schneller bereitstellen kann als ein Excel VBA Code (ist eine generelle Frage)? Die weiteren Berechnungen würden dann aber weiter in Excel laufen.

    Schöne Grüße
    Tauchmann

    Beispiel Daten:
    <TICKER>;<PER>;<DATE>;<TIME>;<LAST>;<VOL>
    Microsoft;0;20150202;093000;40.600000000;1.000
    Microsoft;0;20150202;093000;40.560000000;250
    Microsoft;0;20150202;093000;40.560000000;150
    Microsoft;0;20150202;093000;40.590000000;200
    Microsoft;0;20150202;093000;40.580000000;200
    Microsoft;0;20150202;093000;40.590000000;700
    Microsoft;0;20150202;093001;40.580000000;100
    Microsoft;0;20150202;093001;40.580000000;100
    Microsoft;0;20150202;093001;40.580000000;100
    Microsoft;0;20150202;093001;40.600000000;100
    Microsoft;0;20150202;093001;40.600000000;100
    Microsoft;0;20150202;093001;40.600000000;400
    Microsoft;0;20150202;093001;40.590000000;200
    Microsoft;0;20150202;093001;40.590000000;100
    Microsoft;0;20150202;093002;40.600000000;100
     
    Tauchmann, 20. November 2016
    #1
  2. JotGe Erfahrener User
    Hallo Tauchmann,

    zu 1) Über "Datenbank komprimieren und reparieren" wird die DB kleiner.
    Wenn die Daten in der Art importiert werden, daß hierfür Access erst die Tabellen erstellt, dann kann die Größe daran liegen, daß für jedes Textfeld die maximal zulässige Größe von 255 Zeichen verwendet wird. (meines Wissens bis Acc 2007). Hier wäre eine vordefinierte Tabelle mit den Maximalwerten an Zeichenlänge zum Zwecke des Imports schon sinnvoll. Dies fürhrt dann .....

    zu 2) da nicht bekant ist was der Excel Code macht, kann auch nicht bestätigt werden, daß Access schneller ist.
    unter gewünschtem Format ist wahrscheinlich zu verstehen, daß die Zeichenfolgen in einer definierten Art dargestellt werden sollen. Hierfür nutzt Du die Einstellungen der Formate innerhalb Deiner Formulare. Die Daten werden importiert und nach Deinen Vorgaben im Formular dargestellt.
    dies würde bedeuten, daß, insofern ich jetzt das richtig verstanden habe: Import von Daten aus mehreren Textdateien, Formatieren der Daten und danach der Rücktransport in Excel zur weiteren Berechnung. Hier stellt sich für mich die Frage warum erst in eine DB importieren? Textdateien können auch in Excel eingelesen werden. Und wenn dort im definierten Bereich die Zellen, gemäß der künftigen Verwendung, formatiert sind, kannst Du gleich in Excel weiterrechnen. Damit wäre der Umweg über Access nicht notwendig.

    ... bis dahin einmal
    Auf gutes Gelingen
    Gruß
    JG.
     
  3. Tauchmann Erfahrener User
    Hallo JoGe,

    vielen Dank für deine Antwort.
    Okay Punkt 1 habe ich verstanden und werde ich mal ausprobieren (macht Sinn - grins).

    Dann würde ich mal etwas weiter für Punkt zwei ausholen.
    Ich habe mir mehrere Messwerte pro Sekunde. Mein erster Excel VBA Code löscht alle die Zeilen raus die nicht den Anforderungen entsprechen (z.B. ich suche nur den Min Wert einer Sekunde und alle anderen Zeilen mit genau diesem Zeitstempel werden gelöscht). Dieser Part funktioniert ganz gut und ist in 30 sec mit 85k Zeilen durch. Nun ist aber das Problem das es nun Lücken zwischen den einzelnen Zeilen gibt (da Zeilen ja gelöscht wurden) und dies muss nun wieder korrekt geschlossen werden, damit eine schöne sekundenfeine Liste entsteht.
    Nun kommt es aber vor das nicht jede Sekunde einen Wert hat und somit Sekundenlücken gibt (Zeile 5: 09:23:33, Zeile 6: 09:23:45 à eine Lücke von 12 Sekunden). Das zweite Makro überprüft nun die Zeitstempel und wenn eine Sekunde fehlt wird diese mit der letzten gültigen Sekunde aufgefüllt und der Zeitstempel um eine Sekunde erhöht. Somit erhalte ich sekundenfeine Daten nach meinen Vorgaben.

    Das Problem ist nun das die Aufbereitung extrem viel Zeit benötigt. Mein Test mit 20k Zeilen hat länger als 10 min gedauert. Meine TXT Dateien werden später mal 800k Zeilen haben, da möchte ich einfach nicht an die Zeit denken, das wird Stunden dauern.

    Nun war die Überlegung alle Daten in eine Access DB zu schreiben und dann per SQL genau die benötigten Daten nach meinen Anforderungen ausgeben zulassen, sodass in Excel keine Daten hin und hergeschoben werden müssen, sondern nur noch die fertigen Daten eingelesen werden.

    Ein weiterer Bonus wäre das ich nicht mehr viele einzelne Files hätte, sondern alles konsolidiert in einem File hätte. Ist Access mit SQL in der Lage diese sekundenfeine Daten viel schneller bereitzustellen?

    Ich hoffe das hilft etwas?

    SG
    Tauchmann
     
    Tauchmann, 20. November 2016
    #3
  4. JotGe Erfahrener User

    Textdateiimport macht aus 20MB ein 75MB großes Access File

    Hallo Tauchmann,

    möglich wäre es die gesamte Textdatei in eine Db einzubinden als verknüpfte Datei. Dies hätte den Vorteil daß ein Import in eine Tabelle nicht erforderlich wäre und sich die Db nicht unnötig aufbläht.
    Ein Test mit Deinen Beispieldaten in Excel hat bei 97000 Zeilen eine Dateigröße von ca. 43MB geliefert. Nach dem Export in eine Textdatei änderte sich daran nichts. Beim Import in eine DB wurde diese (ich hatte alle Felder auf TXT gesetz) nach dem komprimieren 103 MB groß.
    Die Größe der Datei ändert sich, wenn den Felder passende Feldatentypen zugewiesen werden (nun noch knapp 57 MB). Bei einer Verknüpfung mit der Textdatei dann nur noch 350 KB (incl. Abfragen).

    Ich denke mal, daß mittels einer Kreuzabfrage und vorgelagerten Abfragen die Aufbereitung lösen liese. Die generierte eine Datei mit 970K Zeilen, welche ich in die Db verknüpft habe. Aus dieser Textdatei, blieben nach dem Ausführen der Kreuztabellenabfrage (mit den eingestellten Gruppierungen) nur noch die zwei Datensätze übrig, mit den niedrigsten Werten. Die Verarbeitung dauerte ca 10 Sekunden. Ich möchte jedoch anmerken, daß ich nicht viel Erfahrung mit Kreuztabellen habe und mich nicht besonders gut damit auskenne. Ich habe diese in einer DB bislang noch nicht gebraucht.

    Nebenbei, die SQL Begriffe für Datensatzoperationen wären in diesem Falle u.a.
    INSERT INTO (anfügen), UPDATE (ändern), INTO (tabelle erstellen), TRANSFORM (für Kreuztabellen)

    Ich werde aus Deinen Beipieldaten mir eine Versuchtabelle erstellen mit der ich noch etwas herumexperimentieren kann.
    Noch eine Frage zum Datum und der Zeit. Werden diese Angaben dann bei der Weiterverarbeitung als Text oder als Datum, mit welchem man rechnen kann, benötigt?

    Ein weiteres gutes Forum für Access ist u.a. http://www.access-o-mania.de/forum/index.php
    Bitte beachte die Regeln für das Crossposten, von diesem Formum, für den Fall, daß Du dort ebenfalls nach einer Antwort bittest.

    Ich hoffe dennoch bis hierher etwas geholfen zu haben.

    Gruß
    JG.
     
Thema:

Textdateiimport macht aus 20MB ein 75MB großes Access File

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden