Announcement

Collapse
No announcement yet.

Textimport

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

  • Textimport

    Hallo Gemeinde,

    was macht den Textimport bei MS Access im Vergleich zu Firebird (z.B. IBExpert insertex) so rasend schnell?
    Ich habe alle möglichen Variationen ausprobiert: EMS, Selbstgeschriebenes (ADO- to Interbase-Komponenten via SQL), in Access eingebundene FB-Tabelle per Einfügeabfrage füllen, Datapump, Import via MS-Text-Treiber usw.
    Alles um Lichtjahre langsamer. 90 MB große csv-Dateien sind < 10 Sek. in der mdb, bei FB dauert das Stunden.

    Was kann man tun?

  • #2
    Liegt unter anderem daran das man Access nicht unbedingt als Datenbank bezeichnen kann. Viele Aspekte die richtige Datenbanken einhalten müssen werden bei Access "Optimiert" interpretiert. Das ACID-Prinzip das jedes DBMS zwingend zu erfüllen hat ist bei Access ehr ein "Wunschanfrage" an Access/Jet-Engine..

    Aber Stunden sollte FB auch nicht benötigen. Stichworte wären hier prepared Statements, Bulk-Insert.

    Comment


    • #3
      Hab seit bestimmt 10Jahren Access nicht mehr angerührt und hattte auch noch nicht ernsthaft die Ehre mit Firebird - also ganz unvoreingenommen geraten (wenn's erlaubt ist und ich nicht schonwieder einen mitbekomme ):

      Wenn ich raten müsste: Der große Zeitunterschied wird wohl vielleicht schon beim parsen der csv entstehen und nicht beim schreiben in die Datenbank...

      Comment


      • #4
        Gibt's in MS-Access einen eingebauten CSV-Import? Das dürfte nämlich einiges erklären. Ich habe zwar kein Access, habe aber dennoch bereits mit Access-DBs gearbeitet (DB via Code erzeugt und Zugriff über ADO).

        Wenn ich z.B. mit einem Delphi-Programm eine CSV-Datei zeilenweise auseinanderpflücke, um jeden Datensatz via Append -> Zuweisung -> Post (und womöglich noch Datasets auf Autocommmit gestellt) in die Datenbank schreibe, ist das immer sehr langsam, egal ob ich Firebird, MySQL oder Access verwende. Ich mach das manchmal aber dennoch, wenn's nicht eilt und/oder ich gerade keine Zeit oder Lust habe, ein etwas umfangreicheres SQL-Script zu proggen. Wenn ich dann morgens an den Rechner komme, hat er brav alles eingetragen ...

        Um Lichtjahre schneller wird das, wenn ich mir zuvor ein SQL-Script aus der CSV-Datei erstelle und dieses dann von einer Query-Komponente ausführen lasse.
        Die Tränen, die du nicht weinen willst, müssen andere für dich vergießen. (Frei nach: wer nicht leiden will, muß hassen.)

        Comment

        Working...
        X