Требуется помощь с древней, неизвестной системой хранения

StackOverflow https://stackoverflow.com/questions/597851

Вопрос

Доброе утро всем,

Я пошел и сказал клиенту, что могу перенести некоторые из его старых данных из системы на базе DOS в новую систему, которую я разработал для них.Однако я сказал это, фактически не просматривая файлы, в которых хранились данные в старой системе - я просто подумал, что быстрый поиск в Google решит всю проблему за меня...Я был неправ!

В любом случае, у этой программы есть папка с сотнями файлов...ну 800 файлов со всевозможными расширениями, .ave, .bak, .brw, .dat, .001, .002...., .007, .dbf, .dbe и .his.

.Bak, очевидно, не является файлом резервной копии SQL.

Есть ли у кого-нибудь опыт программирования с использованием любого из этих типов файлов, который мог бы указать мне на какой-либо способ чтения и извлечения данных?

Я не могу упомянуть название программы по той причине, что я не думаю, что первоначальный разработчик разрешит это...

Спасибо.

Это было полезно?

Решение

Я готов поспорить, что файл .dbf находится в Формат базы данных, что действительно просто.Содержание этого могло бы дать ключ к разгадке остальных из них.

Другие советы

утилита unix "file" может использоваться для распознавания многих типов файлов по их "магическому номеру".Он проверяет содержимое файла и сравнивает его с тысячами известных форматов.Если файлы представлены в каком-либо распространенном формате, это, вероятно, может сэкономить вам значительный объем работы.

если они НЕ в обычном формате, это может заставить вас погнаться за отвлекающими маневрами.Воспринимайте его предложения просто как таковые, предложения.

В дополнение к сайтам, предложенным Грег и Дмитрий, существует также хранилище форматов файлов по адресу http://www.wotsit.org ("Каков его формат?").

Если это не поможет, хороший шестнадцатеричный редактор (с отображением дампа) - ваш друг...Меня всегда поражало, насколько легко можно читать и распознавать многие форматы файлов.

Это может быть что угодно.Лучше всего быть открытым с шестнадцатеричный редактор, и посмотрите , что вы можете увидеть

Большинство старых систем использовали базовый ISAM, в котором на таблицу приходилось по одному файлу, содержащему набор записей данных фиксированной длины.Другие файлы, вероятно, будут индексами

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

Когда вы найдете файл с данными, попробуйте найти известную запись, например"Мистер Смит" и посмотрим, сможете ли вы разобраться в других областях.Целые числа часто байт в байт, даты часто кодируются и отсчитываются от известной начальной даты, деньги могут быть в BCD

Если вы видите сильный шаблон, то, скорее всего, каждая запись имеет фиксированную длину.Вероятно, в файле будет блок заголовка, скажем, 128 или 256 байт, а затем записи фиксированной длины

Многие старые системы написаны на COBOL.Существует множество информации о сетевых форматах re cobol, а некоторые компании даже продают драйверы COBOL ODBC!

Я думаю, Грег прав насчет файла .dbf.Вам следует попытаться найти некоторую информацию о других форматах файлов, используя такие сайты, как http://filext.com и http://dotwhat.net.Файл .bak обычно является копией другого файла с тем же именем, но другим расширением.Например, там может быть файл database.dbf и файл database.bak с его резервной копией.Вам следует запросить (если это возможно) какие-либо детали / документацию / исходный код приложения, которое использовало эти файлы, у вашего клиента.

Еще во времена DOS программисты придумывали свои собственные расширения файлов в значительной степени по своему усмотрению.DBF вполне может быть файлом dBase, который достаточно легко прочитать, а .BAK, вероятно, является резервной копией одного из других важных файлов или просто резервной копией, оставленной текстовым редактором.

Что касается остальных файлов, первое, что я бы сделал, это проверил, находятся ли они в удобочитаемом формате ASCII, открыв их в текстовом редакторе.

Если это не дает вам хорошего результата, попробуйте открыть их в двоичном редакторе, который отображает шестнадцатеричные и ASCII-символы рядом друг с другом с опущенными управляющими символами.Ищите повторяющиеся шаблоны, которые могли бы соответствовать полям записи.Например, скажем .У НЕГО было что-то вроде файла истории заказов, он мог содержать встроенные коды или названия продуктов.Если это так, подсчитайте количество байтов между такими полями.Если это обычное число, то у вас, вероятно, есть плоский двоичный файл записей.Это лучше всего расшифровывается путем открытия файла в приложении, поиска значений в данной записи и поиска соответствующих значений в двоичном файле.Это отнимает много времени и является занозой в заднице, но достаточно выполнимо, как только вы освоитесь с этим.

Счастливого взлома!

.DBF - это dBase или ранняя база данных FoxPro.

.DAT использовался Btrieve и IIRC Paradox для DOS.

Файлы .DBE и .00x, вероятно, являются либо временными, либо индексными файлами, связанными с файлами .DAT.

.DBF - это просто.Они будут открываться с помощью MS Access или Excel (во всяком случае, версий Office до 2007 года), или с помощью ADO или ODBC.

Если файлы .DAT действительно являются Btrieve, вы попали в мир страданий.Они представляют собой беспорядок, даже если вы сможете получить в свои руки правильную версию словаря данных и копию структуры Btrieve.(Был там, сделал это, износил футболку до того, как закончил.)

Как предлагали другие, я рекомендую шестнадцатеричный редактор, если вы не можете определить, что это за файлы и что dbf, вероятно, является Dbase.

BAK, похоже, является файлом резервной копии.Я думаю, что *.001, *.002 и т.д. Могут быть частью резервной копии.Все ли они одинакового размера?Может быть, резервная копия была разбита на более мелкие части, чтобы ее можно было поместить на съемный носитель?

Наконец, примите это как жизненный урок.Перед отправкой этого Технического задания, если клиент попросит вас импортировать данные из системы A в систему B, всегда запрашивайте примерную схему, образцы данных и файлы образцов.Много раз вещи, которые кажутся прямолинейными, оказываются ночными кошмарами.

Удачи вам!

Обязательно используйте измененную дату в файлах в качестве подсказки, если .001, .002 и т.д. Имеют одинаковые временные метки, возможно, вместе с .BAK, они могут быть частью резервной копии.Также в каталоге может быть какой-то старый мусор, который вы можете (в некоторой степени безопасно) игнорировать.Найдите .BAT-файлы и попробуйте также проанализировать их.

Один намек, если файлы .dbf принадлежат dBase, FoxPro или одному из других продуктов, которые использовали этот формат.Тогда вы, возможно, сможете прочитать их с помощью ODBC.В моей системе все еще есть драйвер ODBC для .dbf (Vista, с VS 2008 - как он туда попал, мне придется поискать, но я бы предположил, что это был MDAC Microsoft Data Access, который поместил его туда).Таким образом, вам, возможно, не придется "распаковывать весь мир", если драйвер ODBC будет считывать файлы .dbf.

Кажется, я помню (с небольшой уверенностью, что 20 с лишним лет назад переделывал dBase III), что dBase использовала .001, .002, ...файл для полей memo (большой текст).

Удачи в попытках спасти данные.

Формат DBF довольно распространен.

Другие файлы вызывают недоумение.Я предполагаю, что либо вы имеете дело со старыми файлами BTrieve (неисправными), либо (надеюсь) с результатами какой-то непродуманной схемы резервного копирования, когда кто-то создавал резервные копии своей базы данных в тот же каталог, а не на жесткий диск, и в этом случае вы могли бы их проигнорировать.

Сейчас это часть Pervasive, но много лет назад я использовал Data Junction для переноса данных из множества типов файлов в другие.Взгляните, если только вы не хотите написать синтаксический анализатор.

.dat также могут быть старыми файлами Clarion 2.1...Он также работает на основе ISAM с файлами ключей / индексов

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top