Che cos'è il formato di file DBF?
Un file .dbf contiene un database strutturato organizzato in tabelle con record. Il formato è nato nel 1983 insieme a dBASE II ed è diventato lo standard de-facto della più ampia famiglia di strumenti di database xBase. Il formato .dbf è stato progettato per facilitare lo scambio di dati tra varie applicazioni. Esistono diverse varianti dialettali del formato .dbf - ogni iterazione aggiunge nuovi tipi di dati e flag - e a causa di queste differenze, non tutte le applicazioni possono aprire un determinato file .dbf senza sapere quale dialetto segua.
L'intestazione del file .dbf è codificata in binario e descrive la struttura del database. Contiene informazioni quali:
- Un byte flag di versione (offset 0; es.
0x03= dBASE III/IV senza memo,0x30= Visual FoxPro,0x83= dBASE III con memo companion), - Data dell'ultimo aggiornamento del database (byte 1-3, memorizzati come AA MM GG),
- Numero di record - un intero a 32 bit,
- Lunghezza dell'intestazione e lunghezza del campo del record,
- Flag di crittografia,
- Array descrittore di campo - una tabella di nomi di colonna, tipi e larghezze fisse.
Dopo l'intestazione, i record vengono salvati in testo ASCII o in formato binario con una lunghezza di campo costante. Quando un record viene rimosso dall'applicazione, il suo primo byte viene impostato su un asterisco (0x2A), contrassegnandolo come logicamente eliminato anziché cancellarlo fisicamente. I nuovi record vengono aggiunti alla fine del file, aumentandone le dimensioni; alcune implementazioni compattano successivamente il file con un'operazione PACK e sovrascrivono i record precedentemente eliminati.
I dati memo (testo lungo, binari o oggetti OLE) non sono memorizzati all'interno del .dbf stesso - risiedono in un file companion: .dbt per dBASE III/IV o .fpt per FoxPro/Visual FoxPro. Il record .dbf memorizza solo un puntatore al numero di blocco nel file companion. I file .dbf possono anche essere aperti utilizzando visualizzatori DBF dedicati; tali strumenti consentono agli utenti di ispezionare il contenuto del file in una forma leggibile dall'uomo. I file .dbf non devono essere aperti con un editor di testo, poiché l'intestazione binaria e i dati dei campi appariranno come caratteri illeggibili.
Sicurezza e incolumità
RISCHIO: LOWUn file .dbf contiene semplici dati tabulari, non è eseguibile, quindi aprirne uno è sicuro. Due avvertenze pratiche: (1) discrepanze nella codifica dei caratteri/code-page possono rendere illeggibili i testi accentati o non latini - scegli il charset corretto all'importazione; (2) i DBF provenienti da fonti contabili, fiscali o GIS possono contenere dati personali/sensibili, quindi evita di caricarli su visualizzatori online. I DBF corrotti (file memo mancante o troncati) potrebbero richiedere uno strumento di riparazione/recupero piuttosto che un normale programma di apertura.
Dettagli del formato
in sintesiProgrammi che aprono file DBF
Dettagli tecnici
specifiche approfondite| Categoria formato | Database binario flat a tabella singola; layout dei record a lunghezza fissa con intestazione binaria e array descrittore di campo |
| Tipo MIME | application/dbf (anche application/dbase e application/x-dbf in varie implementazioni) |
| Identificazione versione | Il primo byte (offset 0) è un flag di dialetto piuttosto che un magic number fisso: 0x03 = dBASE III/IV senza memo, 0x30 = Visual FoxPro, 0x83 = dBASE III con memo .dbt, 0xF5 = FoxPro 2.x con memo |
| Struttura intestazione | Intestazione base di 32 byte + un descrittore di campo di 32 byte per colonna + byte terminatore 0x0D; i descrittori di campo iniziano all'offset 32 |
| Gestione eliminazione | I record eliminati vengono contrassegnati logicamente impostando il primo byte del record a 0x2A (asterisco ASCII); rimangono nel file finché non vengono rimossi esplicitamente tramite un'operazione PACK |
| Codifica record | Record a lunghezza fissa; campi Character in ASCII, campi Numeric come stringhe ASCII decimali zonali, Date come ASCII YYYYMMDD di 8 byte, byte binari/raw per altri tipi |
| Tipi di campo supportati | Character (C), Numeric (N), Date (D), Logical (L), Memo (M), Float (F); Visual FoxPro aggiunge Currency (Y), DateTime (T), Integer (I) e General (G) per oggetti OLE |
| File memo companion | .dbt per dBASE III/IV; .fpt per FoxPro e Visual FoxPro - il record .dbf memorizza solo un puntatore al numero di blocco a 10 cifre, non i dati memo stessi |
| File indice companion | .ndx (indice singolo dBASE), .mdx (multi-indice dBASE IV), .cdx (indice composto FoxPro/VFP) - tutti esterni; nessun dato di indice è incorporato nel .dbf |
| Record massimi | Fino a 1.073.741.823 record per tabella (2³⁰ − 1) in dBASE 7; i dialetti precedenti hanno limiti inferiori a seconda della larghezza del campo dell'intestazione |
| Campi massimi per tabella | 255 campi nei dialetti xBase standard (da dBASE III a FoxPro/VFP) |
| Lunghezza nome campo | Fino a 10 caratteri in dBASE III/IV e FoxPro; fino a 128 caratteri in modalità Long Field Names di dBASE 7 |
| Supporto codepage | Identificatore codepage memorizzato nell'intestazione all'offset 29 (0x1D); valori comuni: 0x03 Windows ANSI, 0x57 US OEM (CP437), 0x64 Eastern European OEM (CP852) |
| Flag crittografia | Il byte dell'intestazione all'offset 15 (0x0F) segnala la crittografia dei record a livello di dBASE; se impostato, i dati dei record sono offuscati tramite XOR - distinto da qualsiasi crittografia a livello di file system |
| Utilizzo GIS | L'ESRI Shapefile include sempre un .dbf companion per gli attributi delle feature insieme al file di geometria .shp; strumenti come GDAL/ogr2ogr leggono e scrivono questi file .dbf nativamente |
| Rilasciato | 1983 (dBASE II/III); format family known as xBase |
| Standard aperto | Sì · royalty-free |
| Specifica | www.dbase.com |
Conversioni DBF
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file DBF.