Доступ к NexusDB из Java
Я пытаюсь получить информацию из встроенной БД под названием NexusDB, используя Java.
Альтернатива 1:
Я прочитал на сайте NexusDB, что есть драйвер ODBC, поэтому я могу использовать его с unixODBC. Затем мне нужно сделать мост JDBC-ODBC, как указано здесь.
Альтернатива 2:
Получите какое-то приложение для переноса базы данных NexusDB в другую базу данных. Хотел бы знать один.
Я хотел бы знать, если кто-нибудь когда-либо это, какое лучшее решение?
Спасибо за прочтение.
4 ответа
Альтернатива 1:
Невозможно.
Для unixODBC нужны драйверы Linux, а для nexusDB - нет.
Альтернатива 2:
Не нашел ни одного.
Решение до сих пор
Написание небольшого веб-сервиса с Delphi или получить odbc и использовать его в небольшом прокси. Другими словами, вместо подключения к серверу nexusdb вы подключаетесь к выделенному приложению или веб-сервис передает информацию, и это приложение подключается к nexusd и записывает данные.
У меня был некоторый успех в запуске nexusDB под вином.
Я смог настроить WINEPREFIX, следуя приведенным здесь инструкциям, получить доступ к панели управления Wine odbc (по умолчанию она перенаправляет в unixODBC, и, как заметил Macarse, это тупик), настроить DSN и проверить, что он может получить к нему доступ. данные.
Следующим, что я попробовал, была установка win32 PHP и написание быстрого и грязного теста с использованием odbc_connect. Потратив немало времени на то, чтобы случайно использовать бинарный файл linux php и задуматься, почему он не может использовать (ТОЛЬКО встроенную на win32) функцию odbc_connect, я все заработал.
СОВЕТ: Чтобы избавиться от ощущения, что вы бьетесь головой о кирпичную стену, помните, что любые попытки запуска php-скриптов в этой среде ДОЛЖНЫ выглядеть так
WINEPREFIX=/home/you/yourprefix wine php c:\phptest.php
НЕ
WINEPREFIX=/home/you/yourprefix php c:\phptest.php
Вторая версия будет использовать бинарный файл Linux Linux. Чувствую себя довольно глупо после запуска второй версии добрую дюжину раз и погуглил ошибку, прежде чем понять, что было не так - я думаю, мне нужно встать позже, если я хочу, чтобы все еще работало в 4 часа утра:(
(путь c:\ в приведенных выше примерах может быть передан как /home/you/yourprefix/drive_c/whatever
если предпочитаете - относительные пути тоже подойдут)
И да, я знаю, что это пост некро, но это довольно нишевая ситуация, там не так много информации, которая заставляет nexusdb и odbc играть хорошо на Linux, и если эта информация была мне доступна несколько месяцев назад, когда Я гуглил и наткнулся на эту тему, она могла бы сэкономить мне немало времени. Надеюсь, кто-то еще найдет это полезным.
Если вы подключаетесь к Nexus через.NET, может быть, вы можете использовать IKVM для запуска вашего Java-приложения и подключения через.NET API?
В противном случае я думаю, что ваше собственное "решение" пока звучит нормально.
Лучшие Андерс
Поскольку он встроен (и вы, вероятно, имеете полный доступ к компьютеру), как насчет копирования файлов базы данных в систему Windows, настройки NexusDB и ее драйвера ODBC, а затем использования моста ODBC-JDBC на этом компьютере? После запуска моста вы можете настроить новую JDBC-совместимую СУБД по вашему выбору, подключиться и использовать небольшой код для ВЫБРАТЬ из NexusDB и вставить в вашу новую базу данных.
Если вы хотите перейти на другую встроенную СУБД, я использую базу данных H2 для Java, и должен сказать, что это очень мило. И встроенный, и клиент-серверный режимы, кроссплатформенный и очень быстрый для всего, что меньше 1M строк. Поддерживает практически все функции, которые есть во встроенной СУБД, а затем некоторые.