Конвертация DBF: что теряется и как этого избежать
Конвертация выглядит механической операцией, но именно на ней данные чаще всего и портятся — молча, без единого сообщения об ошибке.
Что проверить до конвертации
- Кодировка. Если в просмотрщике русский текст читается — в выгрузке он тоже будет правильным. Если нет, сначала исправьте кодировку, иначе конвертируете кракозябры.
- Memo. Есть ли поля типа M и приложен ли .fpt или .dbt. Без него текст в выгрузку не попадёт.
- Удалённые записи. Решите заранее, нужны ли они. Разница в числе строк потом объясняется тяжело.
- Число записей. Заголовок DBF иногда завышает счётчик: файл обрезали копированием. Честный инструмент об этом предупредит.
Куда конвертировать
XLSX — когда файл идёт человеку. Числа должны остаться числами, даты — датами, коды — текстом. Правильная выгрузка делает это сама, и в Excel ничего не приходится «чинить» вручную.
CSV — когда файл идёт в другую программу. Здесь решают две настройки: кодировка и разделитель. Для старых учётных систем это windows-1251 и точка с запятой, для современных — UTF-8 и запятая.
SQL — когда данные едут в базу. Выгрузка с готовым CREATE TABLE экономит ручное описание полутора сотен полей и не ошибается в типах.
JSON — когда данные принимает web-сервис.
Обратная задача: получить DBF
Иногда нужно наоборот — отдать данные в старую систему, которая принимает только DBF. Здесь всплывают ограничения формата:
- имя поля — не длиннее десяти символов, без точек и слэшей;
- текстовое поле — не длиннее 254 байт, и считать нужно именно байты: кириллица в однобайтовой кодировке занимает один байт, в UTF-8 — два;
- кодировка только однобайтовая, UTF-8 в DBF не читает ни одна старая программа;
- длинный текст уходит в memo — а значит, рядом появляется второй файл, и передавать их нужно парой.
Инструмент обязан сказать, что именно он изменил: как сократил имя поля, что вынес в memo, где обрезал значение. Молчаливая конвертация — худший вариант из возможных.
Как проверить результат
Самая надёжная проверка — обратное чтение. Выгрузили в DBF — откройте получившийся файл и сравните с исходным по ключевому полю. Если инструмент умеет сравнивать таблицы, это делается за минуту и показывает расхождения до поля.
Для выгрузки в CSV и XLSX достаточно выборочной проверки самых опасных колонок: кодов с ведущими нулями, длинных номеров, дат и сумм с копейками.
Частые вопросы
Сколько записей помещается в CSV?
Ограничений нет. Предел в 1 048 576 строк — это ограничение Excel, а не формата.
Сохранится ли признак удаления при конвертации?
В CSV и XLSX — только если явно вывести его колонкой. При выгрузке в DBF флаг сохраняется.
Что делать с полями типа General и Picture?
Это двоичные объекты — в текстовые форматы они осмысленно не переносятся. Показываем размер и оставляем в DBF.