TVTablesViewer Открыть

Файлы .fpt и .dbt: где на самом деле лежит длинный текст

Если рядом с таблицей лежит файл с тем же именем и расширением .fpt или .dbt — это не мусор и не резервная копия. Это вторая половина таблицы, без которой часть данных не существует.

Обновлено 2026-09-20 · формат DBF

Зачем понадобился отдельный файл

В DBF все записи одинаковой длины: это и делает формат быстрым — адрес любой записи считается умножением. Но длинный текст в такую схему не помещается: нельзя объявить поле «комментарий» длиной в 5000 байт, если у 99% записей комментария нет.

Решение простое: в самой таблице хранится не текст, а номер блока в отдельном файле. Поле занимает 4 или 10 байт, а текст любой длины лежит рядом.

Три формата memo

ФайлКто пишетКак устроен
.DBT (dBase III)dBase III+, ранние Clipperблоки по 512 байт, текст заканчивается парой 0x1A 0x1A
.DBT (dBase IV)dBase IV и 5блок начинается сигнатурой FF FF 08 00, затем длина
.FPTFoxPro 2.x, Visual FoxProразмер блока в заголовке, у каждого блока тип и длина
.SMTClipper SIXвосьмибайтовый заголовок блока

Отличается и ссылка в самой таблице: Visual FoxPro пишет номер блока четырьмя байтами в двоичном виде, а FoxPro 2.x и dBase — десятью символами-цифрами. Перепутать их нельзя: одно и то же поле будет читаться либо как текст, либо как мусор.

Почему вместо текста пусто

Три типичные причины, в порядке частоты:

Как понять, что memo вообще есть

Признаков два. Первый — тип поля в структуре таблицы: M (memo), G (general), P (picture), W (blob). Второй — флаг в заголовке файла.

Сигнатура версии тоже намекает на memo, но врёт: Visual FoxPro пишет версию 0x30 и таблицам с memo, и без него. Поэтому ориентироваться стоит на фактическое наличие memo-полей, а не на байт версии — иначе вы будете вечно искать несуществующий .fpt.

Что с этим делать дальше

Если текст нужен в другой системе, выгрузите таблицу в формат, где длинный текст — обычное значение: XLSX, CSV или JSON. При обратной выгрузке в DBF memo создаётся заново, и файлы .dbf и .fpt нужно держать вместе — поэтому пара упаковывается в один архив.

Частые вопросы

Можно ли открыть .fpt отдельно от .dbf?

Смысла нет: в .fpt лежат только куски текста без привязки к записям. Связь хранится в самой таблице.

Почему memo-файл больше самой таблицы?

Это нормально: блоки выделяются кратно размеру блока, а удалённый текст физически остаётся в файле до перепаковки.

Правки memo сохраняются?

В TablesViewer пока нет: изменения обычных полей записываются, а правка memo требует перестройки файла .fpt — она в работе.

Файл не покидает ваш компьютер. Разбор идёт в браузере, в фоновом потоке. Политика безопасности страницы запрещает отправлять данные на сторонние адреса — это проверяется в инструментах разработчика. После первого открытия приложение работает и без интернета.
Открыть приложение

Ещё по теме