Требуется помощь с древней, неизвестной системой хранения - PullRequest
2 голосов
/ 28 февраля 2009

Утро всем,

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

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

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

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

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

Спасибо.

Ответы [ 13 ]

8 голосов
/ 28 февраля 2009

Готов поспорить, что файл .dbf имеет формат DBase , что действительно просто. Содержимое этого может дать подсказки остальным.

5 голосов
/ 28 февраля 2009

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

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

3 голосов
/ 28 февраля 2009

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

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

3 голосов
/ 28 февраля 2009

Может быть что угодно. Лучше всего открыть с помощью hex hex и посмотреть, что вы видите

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

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

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

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

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

2 голосов
/ 28 февраля 2009

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

1 голос
/ 28 февраля 2009

.DBF - это база данных dBASE или более ранней версии FoxPro.

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

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

.DBF легко. Они откроются в MS Access или Excel (версии Office до 2007 года, во всяком случае) или в ADO или ODBC.

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

1 голос
/ 28 февраля 2009

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

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

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

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

0 голосов
/ 25 марта 2009

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

0 голосов
/ 01 марта 2009

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

0 голосов
/ 01 марта 2009

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

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

...