maximale Anzahl Datensätze bei DBF/NTX?

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon mini990 » Mi, 11. Jan 2017 10:01

Hallo,
wo liegt die Beschränkung bei DBF/NTX
Habe hier bei einem Kunden eine Datei mit Memofeldern.
Aktuell 1.678.595 Datensätze
Belegter Platz
DBF: 372 MB (381.646 KB)
DBT: 2.0 GB (2.097.154 KB)

Denke ich stoße mit der DBT an eine Grenze.....

Gruß Stefan
Benutzeravatar
mini990
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 262
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berngau bei Neumarkt i.d.Opf.

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon Jan » Mi, 11. Jan 2017 10:09

Hallo Stefan,

lt. Doku der 2.0 gibt es folgende Angaben bei der DBFDBE:
Größe dbf: max. 1 GB
Feldzahl: Not limited
Anzahl Sätze: (Offset for record locks - Header() - 1) / RecSize()
Größe Memo-Datei: Limited only by system resources

Bei der FOXDBE sieht das anders aus:
Größe dbf: max. 2 GB
Feldzahl: 2038 (bis 1.90 nur 255 Felder)
Anzahl Sätze: (2^31 - Header() - 1) / RecSize()
Größe Memo-Datei: Theoretical limit is 16 Terabyte or 2^31 blocks. Default block size of 64 bytes leads to a maximum memo file size of 128GB

Wobei ich im ADS inzwsichen eine DBF als FOXCDX habe, die größer als 2 GB ist. Nach diversen Aussagen kann die da bis zu 4 GB groß sein, oder bis 16 TB. Aber der ADS verwaltet die Dateien ja auch anders.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11509
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon brandelh » Mi, 11. Jan 2017 10:22

Auch eine DBF kann etwas über 2 GB groß werden, man muss dann nur den LOCK-Offset erhöhen:
Hilfe zu 1.90 SL1 hat geschrieben:DBFDBE_LOCKOFFSET

Mit dieser Konstante läßt sich der Offset für Satzsperren abfragen oder ändern. Der Offset bestimmt die maximale Größe der DBF-Tabelle. Der voreingestellte Wert für den Offset für Satzsperren ist 1.000.000.000 oder ca. 1GB. Dies entspricht der maximalen Größe einer Clipper-kompatiblen DBF-Tabelle.
Mit Hilfe der Konstante DBFDBE_LOCKOFFSET kann die maximale Größe einer DBF-Dateien vergrößert werden. Um den Maximalwert von derzeit ca. 2,4GB einzustellen, muß ein Wert von 0x80000000 für DBFDBE_LOCKOFFSET gewählt werden. Wird die Einstellung DBFDBE_LOCKOFFSET auf einen Wert größer als den von Clipper unterstützten Maximalwert geändert, können die DBF-Dateien nicht mehr im konkurrierenden Betrieb mit Clipper verwendet werden. Da sich die verwendeten Offset für Satzsperren unterscheiden, ist ein wechselseitiger Ausschluß in diesem Fall nicht mehr gewährleistet.


Die Größe der DBT hängt von der Version ab und vom Dateisystem !
Früher war die auf 2 GB begrenzt, angeblich wurde das seit 1.90.355 aufgehoben.
DBFDBE (DATA-Komponente)
...
Spezifikation für DBF-Dateien
...
Element Spezifikation
...
Größe einer Memo-Datei: Limitiert auf Systemresourcen
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13264
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon Manfred » Mi, 11. Jan 2017 10:37

also bei der DBT kann ich aus Erfahrung sagen, über 2 GB knallt es. 1.90 SL1
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 15968
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon brandelh » Mi, 11. Jan 2017 13:44

auf welchem Dateisystem denn ?

Ich persönlich meide DBTs seit da mal unter Clipper was schief ging, aber mit NTFS sollten größere kein Problem sein, solange die 10 Stellen für Zeiger ausreichen ;-)

Ich könnte es ja mal probieren ... ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13264
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon brandelh » Mi, 11. Jan 2017 14:46

Ich muss Manfred zustimmen, bei meinem Versuch mit der aktuellen 2.00 und der DBFDBE gibt es einen Laufzeitfehler wenn die 2 GB Grenze erreicht wird (trotz exclusivem Zugriff)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13264
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon mini990 » Mi, 11. Jan 2017 15:55

Mein Problem ist folgendes...
die DBT hat exakt 2.0GB, also Maximum denke ich.
ich versuche nun die Datei in eine neue zu kopieren ---> irgendwann Lesefehler
Die Sätze einzeln in eine neue Datenbank kopieren ---> bricht irgendwann ab Lesefehler

Gibt es eine Möglichkeit die Datei noch irgendwie zu lesen?

Gruß Stefan
Benutzeravatar
mini990
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 262
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berngau bei Neumarkt i.d.Opf.

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon HaPe » Mi, 11. Jan 2017 16:07

Hallo Stefan !
Mein Problem ist folgendes...
die DBT hat exakt 2.0GB, also Maximum denke ich.

- Mehrfache Sicherung anlegen
- hat deine DBF 1.000.000 Datensätze, dann in einer der Dateien mit DELETE NEXT 500.000 die erste Häfte löschen und dann mit PACK packen, gegebenenfalls auch mit PACK MEMO probieren.
- in der zweiten Datei dann mit GOTO 500.000 und DELETE REST die zweiten Hälfte löschen und dann mit PACK packen, gegebenenfalls auch mit PACK MEMO probieren.

Jetzt hast du zwei Tabellen mit deinen Daten ...
Zuletzt geändert von HaPe am Mi, 11. Jan 2017 16:09, insgesamt 1-mal geändert.
--
Hans-Peter
Benutzeravatar
HaPe
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 125
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon nightcrawler » Mi, 11. Jan 2017 16:08

mini990 hat geschrieben:Gibt es eine Möglichkeit die Datei noch irgendwie zu lesen?

Versuchs mal im Advantage Data Architect. Dann kannst Du auch Teile per SQL in eine andere Tabelle verschieben.
--
Joachim
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 248
Registriert: Di, 24. Apr 2012 15:33
Wohnort: 72181 Starzach

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon mini990 » Mi, 11. Jan 2017 16:19

PACK MEMO ?
Benutzeravatar
mini990
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 262
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berngau bei Neumarkt i.d.Opf.

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon HaPe » Mi, 11. Jan 2017 16:31

Hallo Stefan !
PACK MEMO ?

Ich bin erst mit Xbase 2.0 zur Gemeinde hinzugestoßen und hatte kurz in der Hilfe geschaut (ist dort aufgelistet)

In VFP kann man damit explizit die Memo-Datei packen (vermutlich) durch löschen nicht mehr vorhanderer Einträge im MEMO-Feld.
Wie es aussieht unterstützt das die Xbase-Engine (gar) nicht weil diese Option ignoriert oder automatisch mit einem PACK der Tabelle ausgeführt wird.
--
Hans-Peter
Benutzeravatar
HaPe
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 125
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon AUGE_OHR » Do, 12. Jan 2017 2:10

mini990 hat geschrieben:Mein Problem ist folgendes...
die DBT hat exakt 2.0GB, also Maximum denke ich.
ich versuche nun die Datei in eine neue zu kopieren ---> irgendwann Lesefehler
Die Sätze einzeln in eine neue Datenbank kopieren ---> bricht irgendwann ab Lesefehler

Gibt es eine Möglichkeit die Datei noch irgendwie zu lesen?
ich würde mal behaupten das deine DBT "Kaputt" ist ...

Frage : was/wie viel ist den in der neue DBF ?

versuche es mal so
Code: Alles auswählen
// Dummy Code um eine DBT zu retten
LOCAL nRec := 1   
LOCAL aLeer := {}
   ...
   SELECT 1
   USE AAA EXCLUSIVE   // ohne Index
   SELECT 2
   USE BBB1 EXCLUSIVE  // leer
   SELECT 1
   DO WHILE !EOF()
      aLeer()      // leeres Array anlegen
      BEGIN SEQUENCE
         GOTO (nRec)
         Scatter() // in ein Array übertragen
      RECOVER
      END SEQUENCE         

      SELECT 2
      APPEND BLANK
      Gather()    // aus dem Array

      nRec++
      IF nRec > 500000
          // splitten und neue BBBx verwenden
          EXIT
      ENDIF
      SELECT 1
   ENDDO
 
   SELECT 2
   CLOSE BBB1
   USE BBB2 EXCLUSIVE  // leer
   SELECT 1
   DO WHILE !EOF()
      aLeer()      // leeres Array anlegen
      BEGIN SEQUENCE
         GOTO (nRec)
         Scatter() // in ein Array übertragen
      RECOVER
      END SEQUENCE         

      SELECT 2
      APPEND BLANK
      Gather()    // aus dem Array

      nRec++
      SELECT 1
   ENDDO
das GOTO(nRec) hat gegenüber dem SKIP ggf. ein andere Fehlermeldung die du abfangen kannst
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10140
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: maximale Anzahl Datensätze bei DBF/NTX?

Beitragvon mini990 » Mo, 16. Jan 2017 13:37

@Jimmy: Danke. hat so funktioniert!

Gruß Stefan
Benutzeravatar
mini990
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 262
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berngau bei Neumarkt i.d.Opf.


Zurück zu Daten und Tabellen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste