.DBF вариант №
Файл с расширением .dbf представляет собой файл базы данных, используемый приложением системы управления базами данных под названием dBASE. Первоначально база данных dBASE называлась Project Vulcan; начатый Wayne Ratliff в 1978 году. Тип файла DBF был введен в dBASE II в 1983 году. Он упорядочивает несколько записей данных с полями типа Array. Программное обеспечение базы данных xBase, которое популярно благодаря совместимости с широким спектром форматов файлов; также поддерживает файлы DBF.
Формат файла DBF
Формат файла DBF принадлежит системе управления базами данных dBASE, но может быть совместим с xBase или другим программным обеспечением СУБД. Первоначальная версия файла dbf состояла из простой таблицы, в которую можно было добавлять, изменять, удалять или печатать данные с использованием набора символов ASCII. С течением времени .dbf был улучшен, и были добавлены дополнительные файлы для расширения функций и возможностей системы баз данных.
В современном dBASE файл DBF состоит из заголовка, записей данных и маркера EOF (конец файла).
- Заголовок содержит информацию о файле, такую как количество записей и количество типов полей, используемых в записях.
- Записи содержат фактические данные.
- Конец файла отмечен одним байтом со значением 0x1A.
Заголовок файла
Внешний вид заголовка файла в dBase приведен в следующей таблице:
Байт | Содержание | Значение |
---|---|---|
0 | 1 байт | Действительный файл dBASE для DOS; биты 0–2 указывают на номер версии, бит 3 указывает на наличие memo-файла 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 байт | Идентификатор языкового драйвера |
30–31 | 2 байта | Сдержанный; заполнить 0 |
32–n [примечание 3] [примечание 4] | 32 байта каждый | массив дескрипторов полей (раскладку дескрипторов см. ниже) |
п + 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 байта | Идентификатор рабочей области |
20 | 1 байт | Пример |
21–30 | 10 байт | Зарезервировано |
31 | 1 байт | Флаг производственного поля MDX; 1, если поле имеет индексный тег в рабочем MDX-файле, 0, если нет |
Записи базы данных
Каждая запись начинается с флага удаления (1 байт). Поля заключаются в записи без разделителей полей. Все полевые данные представлены в формате ASCII. В зависимости от типа поля приложение накладывает дополнительные ограничения. Вот типы полей в dBase:
Тип поля | Мнемоника | Что он принимает |
---|---|---|
С | Персонаж | Любой текст ASCII (дополненный пробелами до длины поля) |
Д | Дата | Числа и символ для разделения месяца, дня и года (хранятся внутри как 8 цифр в формате ГГГГММДД) |
Ф | Плавающая точка | -, ., 0–9 (выровнено по правому краю, дополнено пробелами) |
л | Логический | Y, y, N, n, T, t, F, f или ? (при неинициализации) |
М | Памятка | Любой текст ASCII (хранится внутри как 10 цифр, представляющих номер блока .dbt, с выравниванием по правому краю, дополненный пробелами) |
Н | Числовой | -, ., 0–9 (выровнено по правому краю, дополнено пробелами) |