Есть информационная система, сделанная с помощью IBM Lotus Notes. Нужно вытащить из неё все данные (потом положить в нормальную БД, но это уже другой разговор). Результат должен быть в удобном для машинного использования структурированном виде, который я потом распарсю и положу в БД в нужном виде.
Гугл пока дал ссылки на какие-то шаровароподобные поделки, которые вроде обещают экспорт, но стоят недёшево и какой от них результат будет — пока неясно.
Вроде бы можно в Lotus Client делать экспорт табличек в CSV формате, но это в лучшем случае только текстовые данные. Помимо них в базе как то лежат картинки и файлы, их тоже надо обязательно вытащить.
Вроде есть в природе Java API для этого лотуса, я немножко его поглядел, вроде бы все методы для доступа к данным там есть. Но может кто уже писал такое? Или ещё какие то способы есть для экспорта данных.
К самому серверу доступа нет, есть только лотус клиент, который показывает интерфейс, но, как я понимаю, это и значит то, что есть доступ к базе. По крайней мере через этого клиента все данные видно.
Здравствуйте, vsb, Вы писали:
vsb>Вроде есть в природе Java API для этого лотуса, я немножко его поглядел, вроде бы все методы для доступа к данным там есть. Но может кто уже писал такое? Или ещё какие то способы есть для экспорта данных.
С лотусом на прямую не работал. Нам делали экспорт в xml и из него мы подымали. Bin дата, вроде бы были в base64 или в каком-то бинарном стриме, но, тоже вроде подымались.
Единсвенная проблема была с тем, что изначально компрессия бинарных данных была в каком-то стремном формате, и извлечь данные не смогли, ничего не нарыли на сам фомат или библиотеки. Обошли, вроде как отключением компресси в LN и реэкспортом данных.
В качестве неполного решения использовал простую программку на Java. В Lotus API получаем Session, от него DbDirectory, потом Database (можно перечислить все), потом создаём DxlExporter, экспортируем базу в строку и сохраняем в файл. Неполного потому, что эти чёртовы индусы не предусмотрели потокового API для Java, единственный способ использования их API — выгрузка в строку. Каждый символ это 2 байта, т.е. для дампа в 50 гигов нам надо 64 бита и 100 гигов оперативной памяти (а дамп в XML с файлами в Base64 очень многословный).
В качестве полного решения, вроде бы, можно как то использовать ихний LotusScript (похожий на Visual Basic), примеры экспорта гуглятся. Вот там есть потоковый API, но я с ним пока не разбирался, потому что плохо представляю, куда вообще сувать этот LotusScript. Но если найдёте эксперта по этой странной технологии — это лучший вариант. Ну или эти шароварки, их я пока не пробовал.
Поковырялся в дизассемблированных исходниках lotus коннектора, там связь с удалённым сервером идёт через корбу и в конечном счёте этот экспорт таки делается в поточном виде. Но все публичные апи подставляют StringStream. В принципе ничего не мешает через reflection вытащить все приватные поля и вызвать этот corba-метод напрямую, подставив свой поток, который будет сразу писать в файл. Решение грязненькое, но работать по идее будет. Но только для удалённой сессии, в локальной сессии метод экспорта сразу же вызывает JNI-метод и что там дальше в DLL-ках, я даже смотреть не хочу. Скорее всего тоже поток под капотом, но добраться до него будет посложнее.
Здравствуйте, vsb, Вы писали:
vsb>Есть информационная система, сделанная с помощью IBM Lotus Notes. Нужно вытащить из неё все данные (потом положить в нормальную БД, но это уже другой разговор). Результат должен быть в удобном для машинного использования структурированном виде, который я потом распарсю и положу в БД в нужном виде.
Это очень зависит от информационной системы. Некоторые в принципе не переносятся "в нормальную БД".
Поиск нужно начинать от папы Lotus весь очень хорошо задокументирован.
Там по умолчанию DB2 по моему, JDBC и дальше SQL.. склероз, не?
Здравствуйте, Stanislaw K, Вы писали:
vsb>>Есть информационная система, сделанная с помощью IBM Lotus Notes. Нужно вытащить из неё все данные (потом положить в нормальную БД, но это уже другой разговор). Результат должен быть в удобном для машинного использования структурированном виде, который я потом распарсю и положу в БД в нужном виде.
SK>Это очень зависит от информационной системы. Некоторые в принципе не переносятся "в нормальную БД".
В данном случае переносится, самое обычное корпоративное приложение. Просто некоторые научились пользоваться шуруповёртом и готовы им дом построить.
SK>Поиск нужно начинать от папы Lotus весь очень хорошо задокументирован.
SK>Там по умолчанию DB2 по моему, JDBC и дальше SQL.. склероз, не?
Нет, там не DB2, там какое-то своё хранилище со своими чудными интерфейсами.
Здравствуйте, vsb, Вы писали:
vsb>>>Есть информационная система, сделанная с помощью IBM Lotus Notes. Нужно вытащить из неё все данные (потом положить в нормальную БД, но это уже другой разговор). Результат должен быть в удобном для машинного использования структурированном виде, который я потом распарсю и положу в БД в нужном виде. SK>>Это очень зависит от информационной системы. Некоторые в принципе не переносятся "в нормальную БД". vsb>В данном случае переносится, самое обычное корпоративное приложение. Просто некоторые научились пользоваться шуруповёртом и готовы им дом построить.
Ну так пусть некоторые и переносят самостоятельно. Девочку наймут на копипаст за 5000 руб. Был случай, когда лучшим решением было распечатать все документы, потом сканировать и распознавать.
SK>>Поиск нужно начинать от папы Lotus весь очень хорошо задокументирован. SK>>Там по умолчанию DB2 по моему, JDBC и дальше SQL.. склероз, не? vsb>Нет, там не DB2, там какое-то своё хранилище со своими чудными интерфейсами.