Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

формат БД

58K
12 мая 2010 года
fcdesant
9 / / 12.05.2010
Добрый день.
У меня вопрос. Есть файловая БД.
Надо найти чем её можно открыть. И еще лучше чем к ней подключится.
файлик/и могу выслать на мыло. Тут ругается что много весят :(
Пробывал что то получить от winhex но увидел только начало - 43 4D 4D 49
Подскажите откуда начинать и куда капать.
Страницы:
339
13 мая 2010 года
verybadbug
619 / / 12.09.2005
1. сколько весит один файл?
2. если файлов несколько, они представляют БД в совокупности (если хотя бы одного файла нет - БД не работает), или каждый является фрагментом данных?
1
13 мая 2010 года
kot_
7.3K / / 20.01.2000
Разместите свои файлы на http://files.shareservices.net/ и дайте ссылку.
58K
13 мая 2010 года
fcdesant
9 / / 12.05.2010
Цитата: verybadbug
1. сколько весит один файл?
2. если файлов несколько, они представляют БД в совокупности (если хотя бы одного файла нет - БД не работает), или каждый является фрагментом данных?



Не знаю. Я надеюсь что каждый файл это отдельная таблица.
Сейчас дам линку на архивчик. Там несколько файлов.
Кто поможет - готов компенсировать затраченное время :)
http://files.shareservices.net/file.php?id=147

9
13 мая 2010 года
Lerkin
3.0K / / 25.03.2003
Ковырялся я с этим форматом в своё время. В виде каталога запчастей для Mitsubishi (MMC ASA). Формат этот, форсит какая-то немецкая контора, выпускающая такие сборники, поэтому никакого общего просмотровщика нет (предполагаю, что эти ваши файлы - из аналогичного сборника).
Интерес представляет только файл bin. Файлы pnt - это типа индексов, ddm и fdt - описание полей. В каком-то смысле, очень напоминает формат dbf, paradox или подобные (каждая таблица в отдельных 4 файлах). Если надо, могу оформить мысли по этому формату в пост (просто работа большая, поэтому и спрашиваю). Данные выдирал в таблицу без проблем, но если не программируете - информация моя вам не поможет.
58K
13 мая 2010 года
fcdesant
9 / / 12.05.2010
Цитата: Lerkin
Ковырялся я с этим форматом в своё время. В виде каталога запчастей для Mitsubishi (MMC ASA). Формат этот, форсит какая-то немецкая контора, выпускающая такие сборники, поэтому никакого общего просмотровщика нет (предполагаю, что эти ваши файлы - из аналогичного сборника).
Интерес представляет только файл bin. Файлы pnt - это типа индексов, ddm и fdt - описание полей. В каком-то смысле, очень напоминает формат dbf, paradox или подобные (каждая таблица в отдельных 4 файлах). Если надо, могу оформить мысли по этому формату в пост (просто работа большая, поэтому и спрашиваю). Данные выдирал в таблицу без проблем, но если не программируете - информация моя вам не поможет.



Вас не затруднит поговорить в он лайне? Меня интересует вся информация по поводу этих файлов.
Я программист. Но вот искать как вытащить данные не мой конек.
Через что Вам удобнее по общаться?

9
13 мая 2010 года
Lerkin
3.0K / / 25.03.2003
Цитата: fcdesant
Вас не затруднит поговорить в он лайне? Меня интересует вся информация по поводу этих файлов.
Я программист. Но вот искать как вытащить данные не мой конек.
Через что Вам удобнее по общаться?


Я тогда здесь размещу своё описание этого формата (для всеобщей пользы), а вопросы задавайте в ЛС.

58K
13 мая 2010 года
fcdesant
9 / / 12.05.2010
Цитата: Lerkin
Я тогда здесь размещу своё описание этого формата (для всеобщей пользы), а вопросы задавайте в ЛС.



у меня нет прав для ЛС :(
мне нужно выдрать из него данные. Пишу на vb. Надеюсь из Вашего описания у меня получится подцепится к БД...

9
13 мая 2010 года
Lerkin
3.0K / / 25.03.2003
Цитата: fcdesant
у меня нет прав для ЛС :(
мне нужно выдрать из него данные. Пишу на vb. Надеюсь из Вашего описания у меня получится подцепится к БД...


В течении сегодняшних суток предоставлю описание.

9
13 мая 2010 года
Lerkin
3.0K / / 25.03.2003
Как и обещал, мои раскопки по поводу предложенного формата БД. Технический писатель из меня еще тот, поэтому на вопросы отвечу.:o
Всё нижеизложенное - строго моя исследовательская работа и никакие внешние источники информации не использовались (ничего не нашел).

Итак.
Обзор формата таблиц данных, целесообразнее начать с файла ddm, ибо прост как ini-файл.
Код:
Секций в этом файле (всегда?) 3:
[FILE1]
fdt = имя файла описания полей таблицы

[DDF]
cnt=количество полей
номер поля  = имя поля,буква типа  ; комментарий
Номер поля - от 1 по cnt,  имя поля - всегда 2 символа, а с буквой типа заморочки, потому как - что по-английски I, то по-немецки D (тут самостоятельная работа)
...

[GCX]
Было замечено только одно значение FeldDispLen. Для чего оно - хз, но думаю, что как-то к отображению на экране относится (не экспериментировал).

[SIZE="3"]Формат fdt-файла.[/SIZE]
-------------------------
Сложный, собака. Не всё понял, но то что узнал - в таблице.

1. Заголовок
Всегда (во всяком случае - у всех мною обрабатываемых) имеет размер 54 байта.
Код:
--------------------------------------------------------------------------------
Смещение    Размер         Описание
--------------------------------------------------------------------------------
0       2 байта        1) Размер заголовка
2       2 байта        2) Количество полей, представленных в битовой маске (описание в bin)
4       2 байта        3) Количество полей
6       2 байта        4) ???
8       13 байт     5) Имя файла таблицы
22      13 байт     6) Имя файла индексов
36      2 байта        ???
38      2 байта        Размер индекса (?)
40      2 байта        ???
42      2 байта        ???
44      2 байта        Количество ключевых полей (не более 4-х)
46      3 байта        имя ключевого поля
... (если полей меньше, чем 4, то добито нулями (0x00) до размера заголовка, указанного по смещению (0)).



2. Типы и размеры полей
Перечисляются сразу после заголовка.
Код:
--------------------------------------------------------------------------------
Размер         Описание
--------------------------------------------------------------------------------
3 байта        Имя поля (ASCIIz)
2 байта        Размер поля
2 байта        Тип счетчика (ниже объясню)
2 байта        ???
2 байта        ???
2 байта        Тип поля. Тут такая штука: типы заданы кодом. Вот некоторые, которые понял:
        0x0a:       беззнаковый символьный (unsigned char)
        0x012:      знаковый символьный (char)
        0x14 и 0x16:   знаковый целочисленный (int)
        0x22:       символьная строка, указанной длины (char[...])
        Соответственно, длина указана в "Размере поля"


3. Еще один блок (тоже описания полей)
Идет сразу за блоком типов и размеров полей.
 
Код:
--------------------------------------------------------------------------------
Размер         Описание
--------------------------------------------------------------------------------
2 байта        Смещение поля от начала записи из файла bin
2 байта        Размер поля в байтах
2 байта        ???
2 байта        Порядковый номер поля (от нуля)


4. Полные названия полей

Последний блок.
 
Код:
--------------------------------------------------------------------------------
Размер         Описание
--------------------------------------------------------------------------------
2 байта        Размер строки с названием
---     Сама строка (ASCIIz)




[SIZE="3"]Формат bin-файла[/SIZE]
Каждый файл с расширением bin - это одна таблица. Состоит из только из строк, без заголовка и прочего.

Строки имеют следующий формат:
 
Код:
----------------------------------------------------
Размер         Описание
----------------------------------------------------
2 байта        Длина записи
-----       Собственно, запись с полями (по формату из FDT-файла)


Подробности опишу завтра. Есть там пара хитростей (с битовой маской, например). Еще индексный файл останется, но для целей конвертации во что-то удобоваримое - он нам не нужен.
9
17 мая 2010 года
Lerkin
3.0K / / 25.03.2003
Прошу прощения за задержку.

Итак, расписывать не буду, просто пройдем по паре записей предложенной таблицы и всё станет ясно:

 
Код:
duden_A.bin

00000000: 26 00 01 90 02 00 00 00 01 1E 3D 3D 3D 3D 3D 3D
00000010: 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D
00000020: 3D 3D 3D 3D 3D 3D 3D 3D 26 00 01 90 03 00 00 00
00000030: 01 1E 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D
00000040: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D


1. Читаем 2 байта размера записи (26 00): длина записи - 38 байт
2. Читаем байт размера битовой маски полей (01): длина маски - 1 байт
3. Читаем этот один байт маски (90): в двоичном коде - 10010000.

А вот тут распишем для ясности:
Код:
duden_A.ddm

...
[DDF]
1=AA,D ;TS
2=AB,K ;Kennzeichen
3=AC,S ;Kurztext
4=AD,S ; Text
5=AE,S ; Synonyme

...


На полученной маске 10010000:
Код:
AA  AB  AC  AD  AE
+---+---+---+---+---+---+---+---+
| 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
+---+---+---+---+---+---+---+---+
  T   K   K   T   S
  S   e   u   e   y
      n   r   x   n
      n   z   t   o
      z   t       n
      e   e       y
      i   x       m
      c   t       e
      h
      e
      n


Отсюда видно, что в данной записи присутствуют поля только TS и Text.

4. Поле TS имеет тип D (очевидно целочисленная 32-х битовая). Читаем 02 00 00 00 (число - 2, наверное просто номер строки)
5. Поле Text имеет тип S (очевидно строка переменной длины). Поэтому читаем байт размера длины строки 01: - размер длины строки - 1 байт.
6. Читаем этот один байт 1E: длина строки - 30 байт.
7. Читаем 30 байт поля Text. Получаем строку: ==============================
8. Чтение записи завершено. Повторить с начала всех для последующих строк :)

С другими типами полей и методами их чтения - экспериментируем.
9
17 мая 2010 года
Lerkin
3.0K / / 25.03.2003
Еще такой момент: там еще могут графические файлы идти с гиперссылками, имеющие расширение tif. Но к родному tif-формату отношения они имеют мало. Как я понял, формируются они программкой типа sensdoc, и вот с этим форматом - я абсолютно не разобрался.

upd: Вспомнил, что формат этой базы - от конторы LexCom, а формат графики - от flexcat.
339
18 мая 2010 года
verybadbug
619 / / 12.09.2005
Lerkin ну ты крут! :)
(прошу прощения за оффтоп)
66K
22 марта 2011 года
Number
22 / / 22.03.2011
[ATTACH=CONFIG]4995[/ATTACH]Сам в своё время парсил эти файлы, поэтому интересно почитать тех, кто делал подобное. С описанием от Lerkin-a согласен, но я сталкивался с вариантами файлов bin, в которых на некоторые поля не были заданы смещения и приходилось изворачиваться. Вопрос Lerkin-у: Вы не связывали этот формат файлов с базой ADABAS (NATURAL)? Там тоже есть ddm, fdt.. хотя структура и отличается но видны общие корни.
9
22 марта 2011 года
Lerkin
3.0K / / 25.03.2003
Цитата: Number
... Вы не связывали этот формат файлов с базой ADABAS (NATURAL)? Там тоже есть ddm, fdt.. хотя структура и отличается но видны общие корни.


Так далеко не вникал, но полазил по softwareag, и да, действительно. Очень похожи. Учитывая, что эта контора так же немецкая, много становится очевидным. :)
Кстати, заметил, что формат обновлений спец.справочников на этой БД, изменяется с периодичностью в полгода. А новые версии справочников выходят уже с новой структурой. Стало быть, необходимо более пристальное наблюдение за этими ребятками.

66K
23 марта 2011 года
Number
22 / / 22.03.2011
Adabas C - мэйнфреймовый с натуралом, Adabas D - реляционный с SQL, из него SAPDB вырос. Для работы под windows был odbc сделан, у меня есть подозрение, что его можно задействовать и не читать больше файлы.
66K
26 марта 2011 года
Number
22 / / 22.03.2011
Опять появилась подобная задача(новый справочник), но старая проблема так и не решена. Хочу обновить алгоритм, но не нашел информации о том как определить - есть битовая маска в файле или нет. Те 2 байта, после числа колонок в fdt это номер группы файлов. Для каждой группы приходится руками ставить способ чтения. Из разных групп беру 2 таблицы. ddm, fdt у них подобны. Но в бин у одного, длина блока, длина маски и сама маска, а у другого сразу длина блока длина первого поля, значение и т.д. для остальных. Ведь должен быть более логичный способ определения, а не просматривать начало, каждого бинарника?
62K
26 апреля 2011 года
systemxxx
1 / / 28.07.2010
лазил по инету и наткнулся на человека который похоже вполне успешно разобрался с этой БД http://www.weblancer.net/users/AlexSv/portfolio/807798.html#item Народ помогите разобраться с БД уже крыша едет
9
28 апреля 2011 года
Lerkin
3.0K / / 25.03.2003
Цитата: systemxxx
лазил по инету и наткнулся на человека который похоже вполне успешно разобрался с этой БД http://www.weblancer.net/users/AlexSv/portfolio/807798.html#item Народ помогите разобраться с БД уже крыша едет


Ну, пока время есть, можно еще поковыряться. Давай вводную. т.е какую базу ковыряешь, где скачать, что сам уже нарыл и т.д. Самое главное: чего нужно в результате?

9
28 апреля 2011 года
Lerkin
3.0K / / 25.03.2003
Цитата: Number
Опять появилась подобная задача(новый справочник), но старая проблема так и не решена. Хочу обновить алгоритм, но не нашел информации о том как определить - есть битовая маска в файле или нет. Те 2 байта, после числа колонок в fdt это номер группы файлов. Для каждой группы приходится руками ставить способ чтения. Из разных групп беру 2 таблицы. ddm, fdt у них подобны. Но в бин у одного, длина блока, длина маски и сама маска, а у другого сразу длина блока длина первого поля, значение и т.д. для остальных. Ведь должен быть более логичный способ определения, а не просматривать начало, каждого бинарника?


Есть мнение (и не только моё), что в .fdt это надлежит узнавать.

71K
28 апреля 2011 года
mendezz
1 / / 28.04.2011
Цитата: Lerkin
Ковырялся я с этим форматом в своё время. В виде каталога запчастей для Mitsubishi (MMC ASA). Формат этот, форсит какая-то немецкая контора, выпускающая такие сборники, поэтому никакого общего просмотровщика нет (предполагаю, что эти ваши файлы - из аналогичного сборника).
Интерес представляет только файл bin. Файлы pnt - это типа индексов, ddm и fdt - описание полей. В каком-то смысле, очень напоминает формат dbf, paradox или подобные (каждая таблица в отдельных 4 файлах). Если надо, могу оформить мысли по этому формату в пост (просто работа большая, поэтому и спрашиваю). Данные выдирал в таблицу без проблем, но если не программируете - информация моя вам не поможет.


Хотелось бы попрограммирывать, так сказать прочуствовать все из нутри. Вроде бы все ясно, но не могу понять с чего начать. Если не сложно можешь в двух словах описать алгоритм (например: 1) найти все файлы ddm; 2)читаем ddm...)
В конечном результате хочу получить БД (программы ETKA7) и сохранить в формате MySQL.

9
28 апреля 2011 года
Lerkin
3.0K / / 25.03.2003
Цитата: mendezz
Хотелось бы попрограммирывать, так сказать прочуствовать все из нутри. Вроде бы все ясно, но не могу понять с чего начать. Если не сложно можешь в двух словах описать алгоритм (например: 1) найти все файлы ddm; 2)читаем ddm...)
В конечном результате хочу получить БД (программы ETKA7) и сохранить в формате MySQL.



Ох, грехи мои тяжкие. :facepalm: Ну, давайте в двух словах.
1.Определяем структуру каталогов справочной системы. Она (структура каталогов) сильно отличаться в разных справочниках.
2. Находим каталог, в котором и лежат файлы справочника. Опять же, можно поискать что-то типа файла конфигурации, где и будет указан нужный каталог. А так как каталог с данными может быть не один (например: \epc\data1\a, epc\data1\b, \epc\data2\a и т.д.), не лишним будет составить список каталогов в котором это безобразие находится.
2.5. Заходим в каталог по списку.
3. Читаем .fdt файл, определяем структуру и поля конкретной таблицы и читаем уже таблицу (bin).
4. Проводим мозгоразрывающие манипуляции с записями. Без шуток: там такая структура записей попадается, что полный вперед.
5. При помощи SQL запросов отправляем поля нужной таблицы в базе на MySQL.
6. Повторяем с п.3, пока не кончатся файлы. Потом повторяем с п.2.5.
7. ???
8. PROFIT!

Путь к успеху какой-то такой. ;)

P.S. Кстати, многие .bin - файлы идут без описаний в .fdt, но тут уже думать, думать и думать.
P.P.S. Можно наковырять утилиты для ковыряния ADABAS-овских баз и замучить всех вопросами на форуме разрабов.

66K
29 апреля 2011 года
Number
22 / / 22.03.2011
Цитата: Lerkin
Есть мнение (и не только моё), что в .fdt это надлежит узнавать.



Искал, но закономерности не нашел, в итоге добавил обработчик исключения. Начинаю читать, если сбивается в начале, то для этой таблицы в настройках, ставлю признак - "читать с маской", и на автомате повтор чтения уже по новым правилам. Криво, сам знаю, но задержка минимальная, т.к. всегда сбивается в первых строках.

9
29 апреля 2011 года
Lerkin
3.0K / / 25.03.2003
Цитата: Number
Искал, но закономерности не нашел, в итоге добавил обработчик исключения. Начинаю читать, если сбивается в начале, то для этой таблицы в настройках, ставлю признак - "читать с маской", и на автомате повтор чтения уже по новым правилам. Криво, сам знаю, но задержка минимальная, т.к. всегда сбивается в первых строках.


А какую базу читаете? Скачаю, покопаюсь.

66K
02 мая 2011 года
Number
22 / / 22.03.2011
ETKA7.2
66K
05 мая 2011 года
Number
22 / / 22.03.2011
Lerkin, дай адрес. Пришлю тебе картинку, обсудить хочется.
9
05 мая 2011 года
Lerkin
3.0K / / 25.03.2003
Цитата: Number
Lerkin, дай адрес. Пришлю тебе картинку, обсудить хочется.


Личку включи.

Кста, качнул я ETKу. Не пойму, где базы?

66K
08 мая 2011 года
Number
22 / / 22.03.2011
Цитата: Lerkin
Личку включи.

Кста, качнул я ETKу. Не пойму, где базы?



Всегда были в:
ETKA\DATA\AU\
или ETKA\DATA\... и т.д.

73K
21 июня 2011 года
Fredkin
3 / / 21.06.2011
Коллеги, занимаюсь решением этой же задачи, хотелось бы пообщаться на эту тему более подробно.
Как ваши успехи? Разобрались с форматом? Что думаете по поводу Adabas?
66K
25 июня 2011 года
Number
22 / / 22.03.2011
Цитата: Fredkin
Коллеги, занимаюсь решением этой же задачи, хотелось бы пообщаться на эту тему более подробно.
Как ваши успехи? Разобрались с форматом? Что думаете по поводу Adabas?



Общие корни, не более того.

73K
30 июня 2011 года
Fredkin
3 / / 21.06.2011
Цитата: Number
Общие корни, не более того.



Жаль. Значит ODBC привинтить не удастся.
Личка не работает, как можно связаться с тобой идеи обсудить?

9
30 июня 2011 года
Lerkin
3.0K / / 25.03.2003
Цитата: Fredkin
Жаль. Значит ODBC привинтить не удастся.
Личка не работает, как можно связаться с тобой идеи обсудить?


Да тут и обсуждайте. Всем же интересно.

66K
06 июля 2011 года
Number
22 / / 22.03.2011
Согласен. Я бы с удовольствием обсудил формат изображений.
66K
06 июля 2011 года
Number
22 / / 22.03.2011
Цитата: Lerkin
Да тут и обсуждайте. Всем же интересно.



Неточности, выявленные в описании у Lerkina:

7
06 июля 2011 года
@pixo $oft
3.4K / / 20.09.2006
348x278

Ага,мы всё поняли
9
06 июля 2011 года
Lerkin
3.0K / / 25.03.2003
Хм, да. С картинкой промашка вышла.
А так, да. Неточности обязательно присутствуют, так как материальчик совершенно сырой был, и вообще, левой ногой разбирался.
73K
10 июля 2011 года
Fredkin
3 / / 21.06.2011
Цитата: Number
Неточности, выявленные в описании у Lerkina:


Залей нормального качества картинку пожалуйста, ничегошеньки не видно ж совсем))
Копаю щас формат графики, как разберусь - поделюсь тоже.

66K
05 октября 2011 года
Number
22 / / 22.03.2011
Цитата: Lerkin
Хм, да. С картинкой промашка вышла.
А так, да. Неточности обязательно присутствуют, так как материальчик был совершенно сырой был, и вообще, левой ногой разбирался.



Пробую еще раз! (маленький шаг для одного человека и т.д.)[ATTACH=CONFIG]5369[/ATTACH]

66K
05 октября 2011 года
Number
22 / / 22.03.2011
Цитата: Fredkin
Жаль. Значит ODBC привинтить не удастся.
Личка не работает, как можно связаться с тобой идеи обсудить?



[email]numberhumber@yandex.ru[/email]

4 месяца сюда не заглядывал, может уже забыл всё.

9
12 октября 2011 года
Lerkin
3.0K / / 25.03.2003
Ну чего, парняги, движуха есть какая-нить, не? А только мылами перекидосы идут.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог