Какво е DBF файл?
Файлът с разширение .dbf е файл на база данни, използван от приложение на система за управление на база данни, наречено dBASE. Първоначално базата данни dBASE беше наречена Project Vulcan; стартиран от Wayne Ratliff през 1978 г. Файловият тип DBF беше въведен с dBASE II през 1983 г. Той подрежда множество записи на данни с полета тип масив. Софтуерът за база данни xBase, който е популярен поради съвместимостта си с широк набор от файлови формати; също поддържа DBF файлове.
DBF файлов формат
Файловият формат DBF принадлежи към системата за управление на база данни dBASE, но може да е съвместим с xBase или друг софтуер за СУБД. Първоначалната версия на dbf файла се състоеше от проста таблица, която можеше да има добавяне, промяна, изтриване или отпечатване на данни с помощта на набор от ASCII знаци. С течение на времето .dbf беше подобрен и бяха добавени допълнителни файлове за увеличаване на функциите и възможностите на системата от бази данни.
В съвременния dBASE DBF файлът се състои от заглавка, записите на данни и маркера EOF (край на файла)
- Заглавката съдържа информация за файла, като например броя на записите и броя на типовете полета, използвани в записите.
- Записите съдържат действителните данни.
- Краят на файла се маркира с един байт със стойност 0x1A.
Заглавка на файл
Оформлението на заглавката на файла в dBase е дадено в следната таблица:
Байт | Съдържание | Значение |
---|---|---|
0 | 1 байт | Валиден dBASE за DOS файл; битове 0–2 показват номера на версията, бит 3 показва наличието на dBASE за DOS мемо файл, битове 4–6 показват наличието на SQL таблица, бит 7 показва наличието на всеки мемо файл (или dBASE m PLUS или dBASE за DOS) |
1–3 | 3 байта | Дата на последна актуализация; форматиран като ГГММДД |
4–7 | 32-битово число | Брой записи във файла на базата данни |
8–9 | 16-битово число | Брой байтове в заглавката |
10–11 | 16-битово число | Брой байтове в записа |
12–13 | 2 байта | Запазено; попълнете с 0 |
14 | 1 байт | Флаг, показващ незавършена транзакция[бележка 1] |
15 | 1 байт | Флаг за шифроване[бележка 2] |
16–27 | 12 байта | Запазено за dBASE за DOS в многопотребителска среда |
28 | 1 байт | Флаг за производствен .mdx файл; 1, ако има производствен .mdx файл, 0, ако не |
29 | 1 байт | ID на езиковия драйвер |
30–31 | 2 байта | Запазено; попълнете с 0 |
32–n [бележка 3][бележка 4] | 32 байта всеки | масив от дескриптори на полета (вижте по-долу за оформлението на дескрипторите) |
n + 1 | 1 байт | 0x0D като терминатор на масива на дескриптор на поле |
- Функцията ISMARKEDO проверява този флаг (BEGIN TRANSACTION го задава на 1, END TRANSACTION и ROLLBACK го нулира на 0).
- Ако този флаг е зададен на 1, се появява съобщението Базата данни е шифрована.
- Максималният брой полета е 255.
- n означава последния байт в масива на дескриптора на полето.
Масив от дескриптори на полета
Оформление на дескриптори на полета в dBASE:
Байт | Съдържание | Значение |
---|---|---|
0–10 | 11 байта | Име на полето в ASCII (попълнено с нула) |
11 | 1 байт | Тип поле. Позволени стойности: C, D, F, L, M или N (вижте следващата таблица за значения) |
12–15 | 4 байта | Запазено |
16 | 1 байт | Дължина на полето в двоичен код (максимум 254 (0xFE)). |
17 | 1 байт | Десетичен брой на полето в двоичен |
18–19 | 2 байта | ID на работната зона |
20 | 1 байт | Пример |
21–30 | 10 байта | Запазено |
31 | 1 байт | Производствен MDX поле флаг; 1, ако полето има индексен маркер в производствения MDX файл, 0, ако не |
Записи в база данни
Всеки запис започва с флаг за изтриване (1-байт). Полетата се обвиват в записи без разделители на полета. Всички полеви данни са ASCII. В зависимост от вида на полето, приложението налага допълнителни ограничения. Ето типовете полета в dBase:
Тип поле | Мнемоника | Какво приема |
---|---|---|
C | Характер | Всеки ASCII текст (подплатен с интервали до дължината на полето) |
D | Дата | Числа и знак за разделяне на месец, ден и година (съхраняват се вътрешно като 8 цифри във формат ГГГГММДД) |
F | Плаваща запетая | -, ., 0–9 (дясно подравнено, подплатено с бели интервали) |
L | Логично | Y, y, N, n, T, t, F, f или ? (когато е неинициализирано) |
М | Бележка | Всеки ASCII текст (съхранява се вътрешно като 10 цифри, представляващи номер на .dbt блок, подравнен вдясно, подплатен с бели интервали) |
N | Числово | -, ., 0–9 (дясно подравнено, подплатено с бели интервали) |