aspose.info
DE

DBF - dBase-Datenbankdatei

Aktualisiert

Was ist eine DBF-Datei?

Die Datei mit der Erweiterung .dbf ist eine Datenbankdatei, die von einer Datenbankverwaltungssystemanwendung namens dBASE verwendet wird. Ursprünglich wurde die dBASE-Datenbank als Project Vulcan bezeichnet; wurde 1978 von Wayne Ratliff gestartet. Der Dateityp DBF wurde 1983 mit dBASE II eingeführt. Er ordnet mehrere Datensätze mit Feldern vom Typ Array an. Die xBase-Datenbanksoftware, die aufgrund ihrer Kompatibilität mit einer Vielzahl von Dateiformaten beliebt ist; unterstützt auch die DBF-Dateien.

DBF-Dateiformat

Das DBF-Dateiformat gehört zum dBASE-Datenbankverwaltungssystem, ist aber möglicherweise mit xBase oder anderer DBMS-Software kompatibel. Die ursprüngliche Version der dbf-Datei bestand aus einer einfachen Tabelle, in der Daten mithilfe des ASCII-Zeichensatzes hinzugefügt, geändert, gelöscht oder gedruckt werden konnten. Im Laufe der Zeit wurde .dbf verbessert und zusätzliche Dateien wurden hinzugefügt, um die Funktionen und Fähigkeiten des Datenbanksystems zu erweitern.

In modernen dBASE besteht eine DBF-Datei aus einem Header, den Datensätzen und der EOF-Markierung (End of File).

  • Der Header enthält Informationen über die Datei, wie z. B. die Anzahl der Datensätze und die Anzahl der in den Datensätzen verwendeten Feldtypen.
  • Die Datensätze enthalten die eigentlichen Daten.
  • Das Ende der Datei wird durch ein einzelnes Byte mit dem Wert 0x1A gekennzeichnet.

Dateikopf

Das Layout des Dateikopfs in dBase ist in der folgenden Tabelle angegeben:

ByteInhaltBedeutung
01 ByteGültige dBASE für DOS-Datei; Bits 0–2 geben die Versionsnummer an, Bit 3 zeigt das Vorhandensein einer dBASE für DOS-Memodatei an, Bits 4–6 zeigen das Vorhandensein einer SQL-Tabelle an, Bit 7 zeigt das Vorhandensein einer beliebigen Memodatei an (entweder dBASE m PLUS oder dBASE for DOS)
1–33 BytesDatum der letzten Aktualisierung; formatiert als JJMMTT
4–732-Bit-ZahlAnzahl der Datensätze in der Datenbankdatei
8–916-Bit-ZahlAnzahl der Bytes im Header
10–1116-Bit-ZahlAnzahl der Bytes im Datensatz
12–132 BytesReserviert; mit 0 füllen
141 ByteFlag, das eine unvollständige Transaktion anzeigt [Anmerkung 1]
151 ByteVerschlüsselungs-Flag [Anmerkung 2]
16–2712 BytesReserviert für dBASE für DOS in einer Mehrbenutzerumgebung
281 ByteProduktions-MDX-Datei-Flag; 1, wenn eine .mdx-Produktionsdatei vorhanden ist, 0, wenn nicht
291 ByteSprachtreiber-ID
30–312 BytesReserviert; mit 0 füllen
32–n [Anmerkung 3][Anmerkung 4]je 32 BytesArray von Felddeskriptoren (siehe unten für das Layout der Deskriptoren)
n + 11 Byte0x0D als Felddeskriptor-Array-Terminator
  • Die Funktion ISMARKEDO überprüft dieses Flag (BEGIN TRANSACTION setzt es auf 1, END TRANSACTION und ROLLBACK setzen es auf 0 zurück).
  • Wenn dieses Flag auf 1 gesetzt ist, erscheint die Meldung Datenbank verschlüsselt.
  • Die maximale Anzahl von Feldern beträgt 255.
  • n bedeutet das letzte Byte im Felddeskriptor-Array.

Felddeskriptor-Array

Layout von Felddeskriptoren in dBASE:

ByteInhaltBedeutung
0–1011 ByteFeldname in ASCII (mit Nullen gefüllt)
111 ByteFeldtyp. Zulässige Werte: C, D, F, L, M oder N (Bedeutung siehe nächste Tabelle)
12–154 BytesReserviert
161 ByteFeldlänge in Binär (maximal 254 (0xFE)).
171 ByteFelddezimalzahl in binär
18–192 BytesArbeitsbereichs-ID
201 ByteBeispiel
21–3010 BytesReserviert
311 ByteProduktions-MDX-Feldflag; 1, wenn das Feld ein Index-Tag in der Produktions-MDX-Datei hat, 0, wenn nicht

Datenbankeinträge

Jeder Datensatz beginnt mit einem Lösch-Flag (1 Byte). Felder werden ohne Feldtrennzeichen in Datensätze eingeschlossen. Alle Felddaten sind ASCII. Je nach Art des Feldes erlegt die Anwendung weitere Einschränkungen auf. Hier sind Feldtypen in dBase:

FeldtypMerkhilfeWas es akzeptiert
CZeichenBeliebiger ASCII-Text (mit Leerzeichen bis zur Feldlänge aufgefüllt)
DDatumZahlen und ein Zeichen zur Trennung von Monat, Tag und Jahr (intern als 8 Ziffern im Format JJJJMMTT gespeichert)
FFließkomma-, ., 0–9 (rechtsbündig, mit Leerzeichen aufgefüllt)
L.LogischY, y, N, n, T, t, F, f oder ? (wenn nicht initialisiert)
MNotizBeliebiger ASCII-Text (intern als 10 Ziffern gespeichert, die eine .dbt-Blocknummer darstellen, rechtsbündig, mit Leerzeichen aufgefüllt)
N.Numerisch-, ., 0–9 (rechtsbündig, mit Leerzeichen aufgefüllt)

Verweise

Siehe auch