Was ist das DBF-Dateiformat?
Eine .dbf-Datei enthält eine strukturierte Datenbank in Tabellenform mit Datensätzen. Das Format entstand 1983 zusammen mit dBASE II und wurde zum De-facto-Standard der breiteren xBase-Familie von Datenbankwerkzeugen. .dbf wurde entwickelt, um den Datenaustausch zwischen verschiedenen Anwendungen zu erleichtern. Es existieren mehrere Dialektversionen des .dbf-Formats - jede Iteration fügte neue Datentypen und Flags hinzu - und aufgrund dieser Unterschiede können nicht alle Anwendungen eine bestimmte .dbf-Datei öffnen, ohne zu wissen, welchem Dialekt sie folgt.
Der .dbf-Dateiheader ist binär kodiert und beschreibt die Struktur der Datenbank. Er enthält folgende Informationen:
- Ein Versions-Flag-Byte (Offset 0; z.B.
0x03= dBASE III/IV ohne Memo,0x30= Visual FoxPro,0x83= dBASE III mit Begleitmemo), - Datum der letzten Datenbankaktualisierung (Bytes 1-3, gespeichert als JJ MM TT),
- Anzahl der Datensätze - eine 32-Bit-Ganzzahl,
- Header-Länge und Datensatzfeldlänge,
- Verschlüsselungs-Flag,
- Felddeskriptor-Array - eine Tabelle mit Spaltennamen, Typen und festen Breiten.
Nach dem Header werden Datensätze im ASCII-Text- oder Binärformat mit konstanter Feldlänge gespeichert. Wird ein Datensatz von der Anwendung gelöscht, wird sein erstes Byte auf ein Sternchen (0x2A) gesetzt, was ihn als logisch gelöscht markiert, anstatt ihn physisch zu entfernen. Neue Datensätze werden ans Dateiende angehängt, wodurch die Datei wächst; manche Implementierungen verdichten die Datei später mit einer PACK-Operation und überschreiben zuvor gelöschte Datensätze.
Memo-Daten (Langtext, Binärdaten oder OLE-Objekte) werden nicht in der .dbf-Datei selbst gespeichert - sie befinden sich in einer Begleitdatei: .dbt für dBASE III/IV oder .fpt für FoxPro/Visual FoxPro. Der .dbf-Datensatz speichert nur einen Blocknummernzeiger zur Begleitdatei. .dbf-Dateien können auch mit dedizierten DBF-Viewern geöffnet werden; solche Werkzeuge ermöglichen es Benutzern, den Dateiinhalt in menschenlesbarer Form einzusehen. .dbf-Dateien sollten nicht mit einem Texteditor geöffnet werden, da der binäre Header und die Felddaten als unleserliche Zeichen erscheinen.
Sicherheit
RISIKO: LOWEine .dbf-Datei ist reine tabellarische Daten, kein ausführbarer Code, daher ist das Öffnen sicher. Zwei praktische Hinweise: (1) Zeichenkodierungs-/Codepage-Fehlanpassungen können Texte mit Sonderzeichen oder Nicht-Latein-Schrift unleserlich machen - wählen Sie beim Import den richtigen Zeichensatz; (2) DBFs aus Buchhaltungs-, Steuer- oder GIS-Quellen können persönliche/sensible Daten enthalten, daher sollten Sie diese nicht in Online-Viewern hochladen. Beschädigte DBFs (fehlende Memo-Datei oder abgeschnittene Datei) benötigen möglicherweise ein Reparatur-/Wiederherstellungstool statt eines normalen Öffnungsprogramms.
Formatdetails
kurz gefasstProgramme zum Öffnen von DBF-Dateien
Technische Details
technische Spezifikation| Formatkategorie | Flache Einzeltabellen-Binärdatenbank; Datensatzlayout mit fester Länge, binärem Header und Felddeskriptor-Array |
| MIME-Typ | application/dbf (auch application/dbase und application/x-dbf in verschiedenen Implementierungen) |
| Versionsidentifikation | Das erste Byte (Offset 0) ist ein Dialekt-Flag und keine feste Magicnumber: 0x03 = dBASE III/IV ohne Memo, 0x30 = Visual FoxPro, 0x83 = dBASE III mit .dbt-Memo, 0xF5 = FoxPro 2.x mit Memo |
| Header-Struktur | 32-Byte-Basisheader + ein 32-Byte-Felddeskriptor je Spalte + 0x0D-Terminatorbyte; Felddeskriptoren beginnen bei Offset 32 |
| Löschbehandlung | Gelöschte Datensätze werden logisch markiert, indem das erste Byte des Datensatzes auf 0x2A (ASCII-Sternchen) gesetzt wird; sie verbleiben in der Datei, bis sie explizit per PACK-Operation entfernt werden |
| Datensatzkodierung | Datensätze mit fester Länge; Zeichenfelder in ASCII, numerische Felder als Zoned-Decimal-ASCII-Strings, Datum als 8-Byte-YYYYMMDD-ASCII, binäre/rohe Bytes für andere Typen |
| Unterstützte Feldtypen | Zeichen (C), Numerisch (N), Datum (D), Logisch (L), Memo (M), Fließkomma (F); Visual FoxPro fügt Währung (Y), Datum/Uhrzeit (T), Ganzzahl (I) und Allgemein (G) für OLE-Objekte hinzu |
| Memo-Begleitdatei | .dbt für dBASE III/IV; .fpt für FoxPro und Visual FoxPro - der .dbf-Datensatz speichert nur einen 10-stelligen Blocknummernzeiger, nicht die Memo-Daten selbst |
| Index-Begleitdateien | .ndx (dBASE-Einzelindex), .mdx (dBASE-IV-Mehrfachindex), .cdx (FoxPro/VFP-Verbundindex) - alle extern; keine Indexdaten sind in der .dbf eingebettet |
| Maximale Datensatzanzahl | Bis zu 1.073.741.823 Datensätze pro Tabelle (2°30 − 1) in dBASE 7; frühere Dialekte sind je nach Headerfeld-Breite auf niedrigere Werte begrenzt |
| Maximale Felder pro Tabelle | 255 Felder in Standard-xBase-Dialekten (dBASE III bis FoxPro/VFP) |
| Feldnamenslänge | Bis zu 10 Zeichen in dBASE III/IV und FoxPro; bis zu 128 Zeichen im dBASE-7-Modus für lange Feldnamen |
| Codepage-Unterstützung | Codepage-Kennung im Header bei Offset 29 (0x1D) gespeichert; gebräuchliche Werte: 0x03 Windows ANSI, 0x57 US OEM (CP437), 0x64 Osteuropäisches OEM (CP852) |
| Verschlüsselungs-Flag | Header-Byte bei Offset 15 (0x0F) signalisiert dBASE-Datensatzverschlüsselung; falls gesetzt, werden Datensatzdaten XOR-verschleiert - getrennt von jeder dateisystemseitigen Verschlüsselung |
| GIS-Nutzung | ESRI-Shapefiles enthalten stets eine Begleit-.dbf für Feature-Attribute neben der .shp-Geometriedatei; Tools wie GDAL/ogr2ogr lesen und schreiben diese .dbf-Dateien nativ |
| Veröffentlicht | 1983 (dBASE II/III); format family known as xBase |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | www.dbase.com |
DBF-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu DBF-Dateien.