Что такое формат файла DBF?
Файл .dbf содержит структурированную базу данных, организованную в виде таблиц с записями. Формат появился в 1983 году вместе с dBASE II и стал стандартом де-факто для широкого семейства инструментов баз данных xBase. .dbf был разработан для облегчения обмена данными между различными приложениями. Существует несколько диалектов формата .dbf - каждая итерация добавляла новые типы данных и флаги - и из-за этих различий не все приложения могут открыть конкретный файл .dbf, не зная, какому диалекту он соответствует.
Заголовок файла .dbf закодирован в бинарном виде и описывает структуру базы данных. Он содержит такую информацию, как:
- Байт флага версии (смещение 0; например,
0x03= dBASE III/IV без memo,0x30= Visual FoxPro,0x83= dBASE III с сопутствующим memo), - Дата последнего обновления базы данных (байты 1-3, хранятся как ГГ ММ ДД),
- Количество записей - 32-битное целое число,
- Длина заголовка и длина поля записи,
- Флаг шифрования,
- Массив дескрипторов полей - таблица имен столбцов, типов и фиксированной ширины.
После заголовка записи сохраняются в текстовом ASCII или двоичном формате с постоянной длиной поля. Когда запись удаляется приложением, ее первый байт заменяется на звездочку (0x2A), что помечает ее как логически удаленную, а не стирает физически. Новые записи добавляются в конец файла, увеличивая его размер; некоторые реализации позже сжимают файл с помощью операции PACK и перезаписывают ранее удаленные записи.
Данные Memo (длинный текст, бинарные данные или объекты OLE) не хранятся внутри самого .dbf - они живут в сопутствующем файле: .dbt для dBASE III/IV или .fpt для FoxPro/Visual FoxPro. Запись .dbf хранит только указатель на номер блока в сопутствующем файле. Файлы .dbf также можно открывать с помощью специализированных просмотрщиков DBF; такие инструменты позволяют пользователям изучать содержимое файла в удобочитаемом виде. Файлы .dbf не следует открывать текстовым редактором, так как двоичный заголовок и данные полей будут отображаться в виде непонятных символов.
Безопасность и защита
РИСК: LOWФайл .dbf содержит обычные табличные данные и не является исполняемым, поэтому его открытие безопасно. Два практических предостережения: (1) несоответствие кодировок может привести к искажению текста - выбирайте правильную кодировку при импорте; (2) файлы DBF из бухгалтерских, налоговых или ГИС-источников могут содержать персональные данные, поэтому избегайте их загрузки в онлайн-просмотрщики. Поврежденные DBF (с отсутствующим memo-файлом или обрезанные) могут потребовать инструментов восстановления, а не обычного открытия.
Детали формата
в двух словахПрограммы, открывающие файлы DBF
Технические подробности
глубокая спецификация| Категория формата | Плоская бинарная база данных из одной таблицы; макет записей фиксированной длины с бинарным заголовком и массивом дескрипторов полей |
| MIME-тип | application/dbf (также application/dbase и application/x-dbf в различных реализациях) |
| Идентификация версии | Первый байт (смещение 0) является флагом диалекта, а не фиксированным магическим числом: 0x03 = dBASE III/IV без memo, 0x30 = Visual FoxPro, 0x83 = dBASE III с .dbt memo, 0xF5 = FoxPro 2.x с memo |
| Структура заголовка | 32-байтный базовый заголовок + один 32-байтный дескриптор поля на колонку + байт-терминатор 0x0D; дескрипторы полей начинаются со смещения 32 |
| Обработка удаления | Удаленные записи логически помечаются установкой первого байта записи в 0x2A (ASCII-звездочка); они остаются в файле до явного удаления с помощью операции PACK |
| Кодирование записей | Записи фиксированной длины; символьные поля в ASCII, числовые поля как зонно-десятичные строки ASCII, дата как 8-байтная ASCII YYYYMMDD, бинарные/сырые байты для других типов |
| Поддерживаемые типы полей | Character (C), Numeric (N), Date (D), Logical (L), Memo (M), Float (F); Visual FoxPro добавляет Currency (Y), DateTime (T), Integer (I) и General (G) для объектов OLE |
| Сопутствующий файл Memo | .dbt для dBASE III/IV; .fpt для FoxPro и Visual FoxPro - запись .dbf хранит только 10-значный указатель на номер блока, а не сами данные memo |
| Сопутствующие индексные файлы | .ndx (одиночный индекс dBASE), .mdx (мульти-индекс dBASE IV), .cdx (составной индекс FoxPro/VFP) - все внешние; индексные данные не встраиваются в .dbf |
| Максимум записей | До 1 073 741 823 записей на таблицу (2^30 − 1) в dBASE 7; в более ранних диалектах лимит ниже в зависимости от ширины поля заголовка |
| Максимум полей на таблицу | 255 полей в стандартных диалектах xBase (от dBASE III до FoxPro/VFP) |
| Длина имени поля | До 10 символов в dBASE III/IV и FoxPro; до 128 символов в режиме длинных имен полей dBASE 7 |
| Поддержка кодовых страниц | Идентификатор кодовой страницы хранится в заголовке по смещению 29 (0x1D); типичные значения: 0x03 Windows ANSI, 0x57 US OEM (CP437), 0x64 Eastern European OEM (CP852) |
| Флаг шифрования | Байт заголовка по смещению 15 (0x0F) сигнализирует о шифровании записей на уровне dBASE; если установлен, данные записей обфусцированы через XOR - это отличается от шифрования на уровне файловой системы |
| Использование в ГИС | ESRI Shapefile всегда поставляется с сопутствующим .dbf для атрибутов объектов вместе с файлом геометрии .shp; такие инструменты, как GDAL/ogr2ogr, читают и записывают эти файлы .dbf нативно |
| Выпущен | 1983 (dBASE II/III); format family known as xBase |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.dbase.com |
Конвертации DBF
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах DBF.