[Allegro] problem mit import.exe bei großen datenbanken (es geht weiter!)

Bernhard Eversberg ev at biblio.tu-bs.de
Mi Mär 7 15:45:48 CET 2012


Am 07.03.2012, schrieb B. Eversberg:
 > Das ist knapp drunter, 2GB sind 2147483648 Bytes. Weil bei einem
 > Abbruch das Ende der Schreibdatei nicht mehr genau bis zur
 > Abbruchstelle reicht (wegen der blockweisen Speicherung) sieht es
 > also sehr danach aus, daß hier die 2GB-Grenze die Ursache ist.
 >

Nach einigem Testen stellte sich raus:

1. import16 führt die besagten ftell() und fseek() einfach nicht aus,
    d.h. der Lesezeiger bleibt an der Stelle, und dann geht's einfach
    weiter, glatt über die 2GB-Naht hinweg. import32 dagegen macht dann
    unkontrollierte Sprünge, endet also planlos.

2. Das Problem läßt sich wohl umgehen, was wir zwar noch ganauer
    durchdenken müssen, aber eine erste Testversion hat schon mal
    die besagte Schallmauer korrekt durchbrochen und dann exakt
    dasselbe geliefert wie import16. Mir will scheinen, sogar noch
    deutlich schneller.

3. Sowohl unter 16 wie 32 bit läuft ein sequentielles Lesen anstandslos
    hinter der Schallmauer weiter, d.h. es bemerkt diese gar nicht.
    Nur das Positionieren ist also das Problem, nicht das Lesen.

Die Frage ist noch, ob es so mit jeder denkbaren Endebedingung klaglos
klappen wird. Darüber wird noch nachgedacht.

Erst mal zum Testen:

   http://ftp.allegro-c.de/aktuelle-version/import-test.zip

Da ist ein neues  import.exe  drin, aber Vorsicht, es ist die
Testversion.

Wenn's damit auch bei Ihnen klappt, Herr Lehmann, sind wir ein Stück weiter.
Wer Zeit findet, kann gerne eigene Importe damit und mit index16
testen und die Ergebnisse vergleichen. Versagensfälle wären besonders
interessant.

B.E.



Mehr Informationen über die Mailingliste Allegro