RODBC на блестящих приложениях. Ошибка подключения к базе данных Access (.mdb)

У меня есть скрипт R Shiny, который отлично работает на моем локальном компьютере с Windows, но терпит неудачу, когда я развертываю его на Shinyapps.io (который похож на Unix).

Первоначально я использовал: odbcConnectAccess('test.mdb'), но при развертывании я получаю следующую ошибку:

Unhandled error in observer: could not find function "odbcConnectAccess"

Я проверил, и другие функции RODBC все еще работают. Итак, я попробовал этот код (на основе это сообщение, которое также является тем, что возвращает внутреннее устройство odbcConnectAccess())

uid=""
pwd=""
con =paste("Driver={Microsoft Access Driver (*.mdb)};Dbq=", file.path(getwd(),'test.mdb'), ";Uid=", uid, ";Pwd=", pwd, ";", sep = "")
conn=odbcDriverConnect(con)

Опять же, это работает на моем локальном компьютере, но при развертывании на ShinyApps.io я получаю следующую ошибку:

[RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specified

Я также случайно попробовал odbcConnect(con), который дает следующую ошибку:

Warning in odbcDriverConnect("DSN=Driver={Microsoft Access Driver (*.mdb)};Dbq=/srv/connect/apps/ALC_app_v0_1/Salvage_data_FTP.mdb;Uid=;Pwd=;") :

[RODBC] ERROR: state IM012, code 0, message [unixODBC][Driver Manager]DRIVER keyword syntax error

В справке для odbcDriverConnect() упоминается, что формат строки подключения зависит от вашего ODBC, и Shinysapps.io, похоже, использует unixODBC, но я не могу найти, какой формат unixODBC хочет, чтобы я использовал, чтобы я мог установить соединение?

Может ли кто-нибудь помочь мне понять, как открыть соединение с .mdb на ShinyApps.io? Я не уверен, смогу ли я изменить файлы .ini на сервереshininapps.io, поэтому я очень надеюсь найти правильный формат/синтаксис для установки соединения без DSN.

Спасибо за любую помощь или отзыв!


person Kai Ross    schedule 23.10.2015    source источник


Ответы (1)


«... В настоящее время мы поддерживаем только базы данных с открытым исходным кодом на Shinyapps.io, но мы наблюдаем, не получим ли мы намного больше запросов на проприетарные базы данных». Из группы пользователей ShinyApps. 23.10.2015

Так что похоже, что ответ НЕТ в настоящее время. [ОБНОВЛЕНИЕ СМ. НИЖЕ]

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

[ОБНОВЛЕНИЕ] «Энди поправил меня (во время отпуска) и сообщил, что вы можете заставить это работать с помощью драйвера FreeTDS. Я не эксперт в этом, но если вы измените свой код на что-то вроде этого:

odbcDriverConnect("driver=FreeTDS;Server=hostname;database=dbname;uid=username;pwd=password")

У нас нет настроенных DSN, но вы можете посмотреть советы о том, как это сделать здесь: Попытка подключения к серверу ODBC с помощью RODBC в Ubuntu "

Так что, похоже, это возможно. Я обновлю, если я заработаю.

person Kai Ross    schedule 23.10.2015
comment
Поскольку MS Access Jet/ACE представляет собой механизм базы данных на файловом уровне, рассмотрите его аналог на файловом уровне с открытым исходным кодом, SQLite, который должен поддерживать ваш рабочий процесс в неизменном виде. Он легкий и не слишком требователен к ресурсам или установкам, и вы можете хранить базы данных в отдельных файлах, без корпоративных решений на уровне сервера, таких как MySQL, SQL Server, PostgreSQL, DB2, Oracle. - person Parfait; 26.10.2015