Announcement

Collapse
No announcement yet.

Probleme beim Einfügen von mehr als 100.000 Datensätzen in mdb-Datei über ADO

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

  • Probleme beim Einfügen von mehr als 100.000 Datensätzen in mdb-Datei über ADO

    Ich habe gerade versucht 100.000 oder mehr Datensätze in mittels ADO in eine mdb-Datei zu schreiben. Allerdings werden immer nur 99.934 Datensätze eingetragen. Ein manuelles Starten und Beenden der Transaktion bring nichts, auch wenn es alle 1.000 Datensätze geschieht. Geschrieben wird in eine Tabelle mit einem Integer AutoIncrement, einem Char und einem Varchar Feld. Die Tabelle hat einen Primärschlüssel auf dem AutoInc Feld und wird mittels ADOX erzeugt und mittels ADOCommand und einem Insert Statement befüllt. Ein Versuch mit dem ADODataSet brachte das gleiche Ergebnis. Füge ich erneut Datensätze hinzu, fehlen am Anfang welche und bei dem AutoInc Feld fehlen so um die 200 Werte. Dieser Wert ist nicht reproduzierbar. Vielleicht kennt ja jemand das Problem und kann mir helfen.

    <B>1. Nachtrag:</B> Ich habe jetzt mal 110.000 Datensätze eintragen lassen. Die Werte im AutoInc Feld laufen dann von 1-99.934, dann geht es mit 100.033-109.996 weiter. Es fehlen also 103 Datensätze. Da die Datensätze in einer einfachen for-Schleife in die Tabelle eingetragen werden, können sie eigentlich nicht verloren gehen.

    <B>2. Nachtrag:</B> Nach einem Neustart sind die Datensätze auf einmal alle vorhanden. Irgendwie wird es immer seltsamer.

    Gruß

    Sebastian

  • #2
    Hallo Sebastian,<BR>

    ich importiere derzeit über die Jet ( ADO ) weit über 300.000 Datensätze im .csv Format ohne Probleme ein; etwas Code wäre sicher hilfreich!<BR>

    Mfg Holger Rogg

    Comment


    • #3
      Ich habe noch etwas herumprobiert. Mir ist dann aufgefallen, dass Access jeweils alle Datensätze anzeigt. Also musste es am ADODataSet (Delphi 7) liegen. Beim Verwenden von CommandType:=cmdTable oder CommandType:=cmdTableDirect tritt das von mir beschriebene Problem auf. Nutzt man CommandType:=cmdText und ein einfaches Select-Statement auf die Tabelle verschwinden die Probleme. Eine Erklärung dafür habe ich allerdings nicht.

      Gruß

      Sebastia

      Comment


      • #4
        Hallo,

        hinter ADO steckt eine "eierlegende Wollmilchsau", die über die Eigenschaften in sehr vielen Betriebsarten genutzt werden kann. Die alles entscheidende Frage lautet daher: Wird <b>clUseServer</b> genutzt (direktes Hantieren mit der JET Engine) oder <b>clUseClient</b> (Pufferung der Daten in der OLE Client Cursor Engine)? Allein dieser Konfigurationswert hat einen immensen Einfluss auf das Gesamtverhalten der Anwendung. Daher ist der Hinweis "etwas Code wäre sicher hilfreich!" von Holger sehr höflich formuliert :-

        Comment


        • #5
          Das Problem hat sich erledigt. Es liegt nicht an der JET Engine oder ADO. Das File-Locking war es. Die Daten sind immer in der Datenbank gelandet, allerdings scheint es Probleme zu geben, wenn die Datenbankdatei auf einem von einem Samba Server bereit gestellten Laufwerk liegt.

          Gruß

          Sebastia

          Comment

          Working...
          X