Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 что за формат *.SDF  [new]
Natasha
Member

Откуда:
Сообщений: 3
Большой зарплаты всем работающим в такое время(20.30)!
Суть вопроса: у заказчика есть старая-старая программка для ведения своего бизнеса, использующая для хранения данных файлы формата SDF, причем для каждого файла SDF в наличие файл IDX с таким же именем. Мы работаем новую программку. Заказчик, естественно, хочет чтобы были сконверчены в нее старые данные. Возникли большие проблемы с определением сруктуры указанных файлов.
Заранее благодарна всем откликнувшимся.
22 ноя 02, 20:42    [80912]     Ответить | Цитировать Сообщить модератору
 Re: что за формат *.SDF  [new]
Oleg_Martynov
Member

Откуда: Бокситогорск, Лен. обл.
Сообщений: 890
К сожалению, подобного расширения не встречал. Но думаю, если Вы приведёте первые 100-200 байт файлика, кто-нибудь опознает.
И второе. Программулька была - DOS? Win32?
Удачи!
22 ноя 02, 20:55    [80915]     Ответить | Цитировать Сообщить модератору
 Re: что за формат *.SDF  [new]
Natasha
Member

Откуда:
Сообщений: 3
Программка была досовская. А вот насчет содержимого файла - читабельный текст вперемежку с символами псевдографики, смайликов, цифр и других (в кодировке DOS). Но, к сожалению, читабельный текст перемешан с другими символами без какой либо закономнрности. Или я ее не вижу.
22 ноя 02, 21:26    [80922]     Ответить | Цитировать Сообщить модератору
 Re: что за формат *.SDF  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145754
Похоже, Вы влипли. Скорее всего это самодельный формат. Но там наверняка должны быть какие-то отчеты. 50% за то, что эти отчеты первоначально сбрасываются в какой-то файл. Попробуйте его найти.

Любой, даже доморощеный формат DOS должен состоять из полей фиксированной длины. Скорее всего он сделан по подобию DBF-формата. В первом блоке описание полей, потом данные. Впрочем описания может и не быть. Всякие смайлики и псевдографика - это числа в истинном представлении, a'la Pascal-С.
22 ноя 02, 22:54    [80939]     Ответить | Цитировать Сообщить модератору
 Re: что за формат *.SDF  [new]
NNN
Guest
Несколько замечаний:
1. Вообще-то, в природе существует формат SDF, но это не Ваш случай (иначе бы жизнь была легка и прекрасна):

SDF
System Data Format file. An SDF file is an ASCII text file in
which records have a fixed length and end with a carriage
return and line feed. Fields are not delimited. The file name
extension is assumed to be .txt for SDF files.

2. Возможно, что Cat2 не прав и тут не обошлось без dbase/clipper/foxbase/foxpro. Дело в том, что эти языки позволяют переименовывать dbf в файлы с любым расширением, но присвоить другое расширение индексам не получится. То, что у Вас присутствую idx-файл, дает шанс на легкое решение проблемы. Для проверки переименуте один из файлов и попробуйте открыть его хотя бы в Excel.
3. Возможно, что Cat2 прав и это действительно самопальный формат по подобию dbf. В этом случае попробуйте удалить заголовок файла (все, что по Вашему мнению не относится к самим данным) и открыть файл в Excel. Если на запись отведено постоянное количество байт, мастер преобразования легко с ним справится. Делее возможно два варианта - использовать Excel для преобразования в более удобный формат (недостаток - ручная работа и ограничения по объему данных в Excel) или исследовать формат, имея перед глазами, то что должно быть на выходе.
4. Возможно это просто файлы прямого доступа, с которыми работают Pascal или BASIC. Попробуйте глянуть служебную информацию в exe-файле, чтобы определить на чем написана программа (ключевые слова поиска - microsoft, borland etc), а затем обратиться за адресной помощью.
5. Формат файлов не линейный, не как у dbf, определить ничего не удалось. Возможно два варианта - кропотливая работа по раскодированию формата (почувствуйте себя хакером! :)) или долгое объяснение заказчику, что со старыми данными у него облом.

Удачи!
23 ноя 02, 08:50    [80979]     Ответить | Цитировать Сообщить модератору
 Re: что за формат *.SDF  [new]
Natasha
Member

Откуда:
Сообщений: 3
Спасибо за ответы.
Начало SDF файла, что-то вроде справочника ведомств, т.е.самой что ни на есть простой структуры, после разбора Excel'ем выглядит так:
МинобороныМинобразованияМинстройматериалов9Министерство природных ресурсов и охраны окружающей средыМинсвязиМинсельхозпродМинистерство социальной защиты+Мин. строительства и эксплуатации автодорогМинторг и т.д.
Как идентифицировать запись, чтобы определить значение внешнего ключа в других связанных файлах?
А вот файл, содержащий информацию по платежам имеет вот такой вид (начало):
"@ ш@30/10/000За услуги по п № 822 от 30/10/2000г.*по договору № 610 от 10/03/2000г. Без НДС.X30/10/00Цх@30/10/000За услуги по п № 803 от 30/10/2000г.*по договору № 218 от 02/02/2000г. Без НДС.W30/10/00╚PA30/10/007За дра и т.д.".
Из контекста старой программки видно какому ведомству выставляется счет.
Судя по всему поля в одной записи не разделяются.
Общий размер SDF файлов около 5 Mb, так что вариант с кропотливым разбором не очень катит, а вот объяснений с заказчиком, похоже, не избежать. Грустно то как.
23 ноя 02, 12:04    [80996]     Ответить | Цитировать Сообщить модератору
 Re: что за формат *.SDF  [new]
NNN
Guest
Ситуация становится проясняется..
Во-первых, теперь вы хотя бы сможете программно разбить информацию по стоблцам.
>МинобороныМинобразования
Если ANSI-код у "" совпадает, то к нему уже можно привязаться как разделителю и такие файлы можно сказать у вас уже "в кармане". Если разные - то возможно это коды, являющиеся ключами для других файлов.
С вторым вариантом посложнее, но можно помучиться. Во-первых, Вы сразу можете по маске определить даты и отбросить их во временный файл-таблицу, а в исходном заменить собственной комбинацией символов (неплохо бы просканировать файлы, возможно, что какой-то из 256 символов вообще не используется, он бы Вам пригодился для подмены). Во-вторых, несмотря на переменную длину строк, у вас есть "непонятная" комбинация из 4-х символов, ее тоже можно использовать как разделитель. Кроме того, возможно в ней зашифрована длина строки и/или ключ к справочнику.
К тому же, у вас есть ориентир - работающая программа. Начните свои преобразования, попробуйте получить какой-то результат и сравните с тем, что должно быть. Вы рано или поздно найдете закономерность.
Лет 7-8 назад, я перелопатил столько информации в неизвестных форматах, иногда даже не представляя, что должно быть в результате, что и вспоминать страшно. Поэтому прекрасно понимаю, что работка не сахар и универсального решения, к сожалению, не существует.
А определить, на чем написана программа так и не удалось?
>а вот объяснений с заказчиком, похоже, не избежать. Грустно то как
Еще рано сдаваться:) Успехов!
23 ноя 02, 12:49    [81000]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить