Wat is het DBF-bestandsformaat?
Een .dbf-bestand bevat een gestructureerde database georganiseerd in tabellen met records. Het formaat ontstond in 1983 samen met dBASE II en werd de de-facto standaard van de bredere xBase-familie van databasetools. .dbf is ontworpen om gegevensuitwisseling tussen verschillende applicaties te vergemakkelijken. Er bestaan meerdere dialectversies van het .dbf-formaat - elke iteratie voegt nieuwe datatypes en vlaggen toe - en vanwege deze verschillen kunnen niet alle applicaties een bepaald .dbf-bestand openen zonder te weten welk dialect het volgt.
De header van het .dbf-bestand is binair gecodeerd en beschrijft de structuur van de database. Het bevat informatie zoals:
- Een versie-vlagbyte (offset 0; bijv.
0x03= dBASE III/IV zonder memo,0x30= Visual FoxPro,0x83= dBASE III met bijbehorende memo), - Datum van de laatste database-update (bytes 1-3, opgeslagen als JJ MM DD),
- Aantal records - een 32-bits integer,
- Headerlengte en recordveldlengte,
- Versleutelingsvlag,
- Veld-descriptor-array - een tabel met kolomnamen, types en vaste breedtes.
Na de header worden records opgeslagen in ASCII-tekst of binair formaat met een constante veldlengte. Wanneer een record door de applicatie wordt verwijderd, wordt de eerste byte ingesteld op een asterisk (0x2A), waardoor het als logisch verwijderd wordt gemarkeerd in plaats van het fysiek te wissen. Nieuwe records worden aan het einde van het bestand toegevoegd, waardoor de grootte toeneemt; sommige implementaties compacteren het bestand later met een PACK-bewerking en overschrijven eerder verwijderde records.
Memo-gegevens (lange tekst, binair of OLE-objecten) worden niet in het .dbf-bestand zelf opgeslagen - deze bevinden zich in een bijbehorend bestand: .dbt voor dBASE III/IV of .fpt voor FoxPro/Visual FoxPro. Het .dbf-record slaat alleen een bloknummer-pointer naar de metgezel op. .dbf-bestanden kunnen ook worden geopend met speciale DBF-viewers; dergelijke tools stellen gebruikers in staat de bestandsinhoud in een leesbare vorm te inspecteren. .dbf-bestanden mogen niet worden geopend met een teksteditor, omdat de binaire header en veldgegevens als onleesbare tekens zullen verschijnen.
Beveiliging & veiligheid
RISICO: LOWEen .dbf bevat gewone tabelgegevens en is niet uitvoerbaar, dus het openen ervan is veilig. Twee praktische waarschuwingen: (1) verkeerde teken-codering of codepagina-instellingen kunnen tekst met accenten of niet-Latijnse tekst onleesbaar maken - kies de juiste tekenset bij het importeren; (2) DBF's uit boekhoudkundige, fiscale of GIS-bronnen kunnen persoonlijke/gevoelige gegevens bevatten, dus vermijd het uploaden ervan naar online viewers. Corrupte DBF's (ontbrekend memo-bestand of afgebroken) hebben mogelijk een reparatie-tool nodig in plaats van een normale opener.
Formaatdetails
in een notendopProgramma's die DBF-bestanden openen
Technische details
diepe specificaties| Formaatcategorie | Platte binaire database met één tabel; recordindeling met vaste lengte, een binaire header en een veld-descriptor-array |
| MIME-type | application/dbf (ook application/dbase en application/x-dbf in diverse implementaties) |
| Versie-identificatie | Eerste byte (offset 0) is een dialectvlag in plaats van een vast magisch getal: 0x03 = dBASE III/IV zonder memo, 0x30 = Visual FoxPro, 0x83 = dBASE III met .dbt memo, 0xF5 = FoxPro 2.x met memo |
| Headerstructuur | 32-byte basisheader + één 32-byte velddescriptor per kolom + 0x0D terminator-byte; velddescriptoren beginnen bij offset 32 |
| Verwijderingsafhandeling | Verwijderde records worden logisch gemarkeerd door de eerste byte van het record in te stellen op 0x2A (ASCII-asterisk); ze blijven in het bestand totdat ze expliciet worden verwijderd via een PACK-bewerking |
| Recordcodering | Records met vaste lengte; Character-velden in ASCII, Numeric-velden als zoned-decimal ASCII-strings, Date als 8-byte JJJJMMDD ASCII, binaire/ruwe bytes voor andere types |
| Ondersteunde veldtypes | Character (C), Numeric (N), Date (D), Logical (L), Memo (M), Float (F); Visual FoxPro voegt Currency (Y), DateTime (T), Integer (I) en General (G) voor OLE-objecten toe |
| Memo-bijbestand | .dbt voor dBASE III/IV; .fpt voor FoxPro en Visual FoxPro - het .dbf-record slaat alleen een 10-cijferige bloknummer-pointer op, niet de memo-gegevens zelf |
| Index-bijbestanden | .ndx (dBASE single-index), .mdx (dBASE IV multi-index), .cdx (FoxPro/VFP compound index) - allemaal extern; er zijn geen indexgegevens ingebed in de .dbf |
| Maximum aantal records | Tot 1.073.741.823 records per tabel (2^30 − 1) in dBASE 7; eerdere dialecten hebben lagere limieten afhankelijk van de header-veldbreedte |
| Maximum aantal velden per tabel | 255 velden in standaard xBase-dialecten (dBASE III tot FoxPro/VFP) |
| Veldnaamlengte | Tot 10 tekens in dBASE III/IV en FoxPro; tot 128 tekens in dBASE 7 Long Field Names-modus |
| Codepagina-ondersteuning | Codepagina-identificatie opgeslagen bij header-offset 29 (0x1D); veelvoorkomende waarden: 0x03 Windows ANSI, 0x57 US OEM (CP437), 0x64 Oost-Europees OEM (CP852) |
| Versleutelingsvlag | Header-byte op offset 15 (0x0F) signaleert recordversleuteling op dBASE-niveau; indien ingesteld, zijn recordgegevens XOR-geobfusceerd - dit staat los van eventuele versleuteling op bestandssysteemniveau |
| GIS-gebruik | ESRI Shapefile levert altijd een bijbehorende .dbf voor kenmerkattributen naast het .shp-geometriebestand; tools zoals GDAL/ogr2ogr lezen en schrijven deze .dbf-bestanden systeemeigen |
| Uitgebracht | 1983 (dBASE II/III); format family known as xBase |
| Open standaard | Ja · royaltyvrij |
| Specificatie | www.dbase.com |
DBF conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over DBF-bestanden.