Co to jest format pliku DBF?
Plik .dbf zawiera strukturalną bazę danych zorganizowaną w tabele z rekordami. Format powstał w 1983 roku wraz z dBASE II i stał się de facto standardem szerszej rodziny narzędzi bazodanowych xBase. .dbf został zaprojektowany, aby ułatwić wymianę danych między różnymi aplikacjami. Istnieje wiele wersji dialektów formatu .dbf - każda iteracja dodaje nowe typy danych i flagi - a ze względu na te różnice nie wszystkie aplikacje mogą otworzyć dany plik .dbf bez wiedzy, za którym dialektem on podąża.
Nagłówek pliku .dbf jest zakodowany binarnie i opisuje strukturę bazy danych. Zawiera on takie informacje jak:
- Bajt flagi wersji (offset 0; np.
0x03= dBASE III/IV bez memo,0x30= Visual FoxPro,0x83= dBASE III z towarzyszącym memo), - Data ostatniej aktualizacji bazy danych (bajty 1-3, zapisane jako RR MM DD),
- Liczba rekordów - 32-bitowa liczba całkowita,
- Długość nagłówka i długość pola rekordu,
- Flaga szyfrowania,
- Tablica deskryptorów pól - tabela nazw kolumn, typów i stałych szerokości.
Po nagłówku rekordy są zapisywane w formacie tekstowym ASCII lub binarnym ze stałą długością pola. Gdy rekord jest usuwany przez aplikację, jego pierwszy bajt jest ustawiany na gwiazdkę (0x2A), co oznacza go jako logicznie usunięty, zamiast fizycznego wymazania. Nowe rekordy są dopisywane na końcu pliku, zwiększając jego rozmiar; niektóre implementacje później kompaktują plik operacją PACK i nadpisują wcześniej usunięte rekordy.
Dane typu Memo (długi tekst, dane binarne lub obiekty OLE) nie są przechowywane wewnątrz samego .dbf - znajdują się w towarzyszącym pliku: .dbt dla dBASE III/IV lub .fpt dla FoxPro/Visual FoxPro. Rekord .dbf przechowuje jedynie wskaźnik numeru bloku do pliku towarzyszącego. Pliki .dbf można również otwierać za pomocą dedykowanych przeglądarek DBF; takie narzędzia pozwalają użytkownikom na inspekcję zawartości pliku w formie czytelnej dla człowieka. Plików .dbf nie należy otwierać edytorem tekstu, ponieważ binarny nagłówek i dane pól pojawią się jako nieczytelne znaki.
Bezpieczeństwo
RYZYKO: LOWPlik .dbf to zwykłe dane tabelaryczne, nie jest wykonywalny, więc jego otwieranie jest bezpieczne. Dwie praktyczne uwagi: (1) niedopasowanie kodowania znaków/strony kodowej może zniekształcić polskie znaki - wybierz właściwy zestaw znaków przy imporcie; (2) pliki DBF z systemów księgowych, podatkowych lub GIS mogą zawierać dane osobowe/wrażliwe, więc unikaj przesyłania ich do przeglądarek online. Uszkodzone pliki DBF (brakujący plik memo lub obcięte dane) mogą wymagać narzędzia do naprawy/odzyskiwania zamiast zwykłego programu do otwierania.
Szczegóły formatu
w pigułceProgramy otwierające pliki DBF
Szczegóły techniczne
specyfikacja| Kategoria formatu | Płaska binarna baza danych z jedną tabelą; układ rekordów o stałej długości z binarnym nagłówkiem i tablicą deskryptorów pól |
| Typ MIME | application/dbf (również application/dbase i application/x-dbf w różnych implementacjach) |
| Identyfikacja wersji | Pierwszy bajt (offset 0) jest flagą dialektu, a nie stałą sygnaturą: 0x03 = dBASE III/IV bez memo, 0x30 = Visual FoxPro, 0x83 = dBASE III z memo .dbt, 0xF5 = FoxPro 2.x z memo |
| Struktura nagłówka | 32-bajtowy nagłówek bazowy + jeden 32-bajtowy deskryptor pola na kolumnę + bajt terminatora 0x0D; deskryptory pól zaczynają się od offsetu 32 |
| Obsługa usuwania | Usunięte rekordy są logicznie oflagowane przez ustawienie pierwszego bajtu rekordu na 0x2A (gwiazdka ASCII); pozostają w pliku do czasu jawnego usunięcia operacją PACK |
| Kodowanie rekordów | Rekordy o stałej długości; pola znakowe (Character) w ASCII, pola numeryczne (Numeric) jako ciągi ASCII zoned-decimal, data (Date) jako 8-bajtowe ASCII RRRRMMDD, surowe bajty binarne dla innych typów |
| Obsługiwane typy pól | Character (C), Numeric (N), Date (D), Logical (L), Memo (M), Float (F); Visual FoxPro dodaje Currency (Y), DateTime (T), Integer (I) oraz General (G) dla obiektów OLE |
| Towarzyszący plik memo | .dbt dla dBASE III/IV; .fpt dla FoxPro i Visual FoxPro - rekord .dbf przechowuje tylko 10-cyfrowy wskaźnik numeru bloku, a nie same dane memo |
| Towarzyszące pliki indeksowe | .ndx (pojedynczy indeks dBASE), .mdx (wielokrotny indeks dBASE IV), .cdx (złożony indeks FoxPro/VFP) - wszystkie zewnętrzne; dane indeksowe nie są osadzone w .dbf |
| Maksymalna liczba rekordów | Do 1 073 741 823 rekordów na tabelę (2³⁰ − 1) w dBASE 7; wcześniejsze dialekty mają niższe limity zależne od szerokości pola w nagłówku |
| Maksymalna liczba pól na tabelę | 255 pól w standardowych dialektach xBase (od dBASE III do FoxPro/VFP) |
| Długość nazwy pola | Do 10 znaków w dBASE III/IV i FoxPro; do 128 znaków w trybie długich nazw pól dBASE 7 |
| Obsługa stron kodowych | Identyfikator strony kodowej przechowywany w nagłówku pod offsetem 29 (0x1D); typowe wartości: 0x03 Windows ANSI, 0x57 US OEM (CP437), 0x64 Eastern European OEM (CP852) |
| Flaga szyfrowania | Bajt nagłówka pod offsetem 15 (0x0F) sygnalizuje szyfrowanie rekordów na poziomie dBASE; jeśli ustawiony, dane rekordów są zaciemnione operacją XOR - niezależnie od szyfrowania systemu plików |
| Użycie w GIS | ESRI Shapefile zawsze dostarcza towarzyszący plik .dbf dla atrybutów obiektów obok pliku geometrii .shp; narzędzia takie jak GDAL/ogr2ogr odczytują i zapisują te pliki .dbf natywnie |
| Wydano | 1983 (dBASE II/III); format family known as xBase |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.dbase.com |
Konwersje DBF
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki DBF.