Как читать данные из файлов базы данных Microsoft Access.accdb в R?
Документация RODBC предполагает, что это возможно, но я не уверен, как читать данные из файла Microsoft Access (новый формат .accdb
) с помощью этот пакет в R (на Debian GNU/Linux). Виньетка говорит о драйверах, но я не совсем понимаю, как я могу видеть, какие драйверы установлены, и, в частности, если у меня установлен драйвер для доступа к этим файлам .accdb
.
Какой код вы используете для чтения данных из .accdb
файлов? И, пожалуйста, укажите, на какой платформе вы находитесь, и если вам нужно установить специальный драйвер.
Ответы
Ответ 1
Название страницы, которую вы связали, RODBC: доступ к базе данных ODBC, может вводить в заблуждение. Доступ не означает MS Access; в том, что доступ к названию означает подключение. RODBC является менеджером ODBC для R. Он служит посредником для обеспечения связи между R и драйвером ODBC для вашей целевой базы данных. Поэтому для GNU/Linux вам все равно нужен драйвер ODBC для файлов базы данных MS Access... RODBC не предоставляет его.
Тем не менее, я не знаю никаких бесплатных (как в свободе и/или пиве) драйверов MS Access ODBC для Linux. Easysoft продает один, но это не дешево. Также могут быть предложения от других поставщиков; Я не смотрел.
Может быть проще использовать машину Windows для экспорта ACCDB в формат, который может использоваться R. Или запустите R в Windows вместо Linux.
Ответ 2
Чтобы импортировать файл Microsoft Access после выпуска 2007 года (.accdb) в R, вы можете использовать пакет RODBC
.
Для файла .accdb с именем "foo.accdb" со следующими таблицами "bar" и "bin", хранящиеся на рабочем столе компьютера John Doe:
library(RODBC) #loads the RODBC package
dta <- odbcConnectAccess2007("C:/Users/JohnDoe/Desktop/foo.accdb") #specifies the file path
df1 <- sqlFetch(dta, "bar") #loads the table called 'bar' in the original Access file
df2 <- sqlFetch(dta, "bin") #loads the table called 'bin' in the original Access file
Ответ 3
Вам понадобятся драйверы для подключения Access к интерфейсу ODBC. Они должны быть в вашей системе, если у вас установлен Access. Если нет, загрузите Access Database Engine из Microsoft. Затем создайте свое подключение к данным в ODBC (вам может потребоваться запустить 32-разрядный c:\windows\sysWOW64\odbcad32.exe
при работе с 64-разрядной Windows). Обратите внимание, что этот метод не работает в GNU/Linux. Время выполнения - только Windows, о чем упоминается @HansUp ниже.
Что касается кода, вы, вероятно, начинаете с odbcConnect(dsn, uid = "", pwd = "", ...)
, и документация может помочь с деталями.
Ответ 4
ODBC - это немного система "подключи и молясь", соединяющая разные кирпичи.
RODBC позволяет вам получить что-то от поставщика ODBC в R. Вам по-прежнему нужен (из-за отсутствия лучшего слова) драйвер ODBC-экспорта этой системы баз данных. Что вам нужно на вашей ОС - поэтому я думаю, что с помощью комбинации Access-in-Linux вам не повезло. Windows, только.
Людям удалось получить доступ к SQL Server с использованием драйверов FreeTDS (для протокола TDS, лежащего в основе Sybase, и с помощью ранней лицензии также MS-SQL), но это, безусловно, борьба, чтобы добиться этого.
Ответ 5
> library(RODBC)
> db<-file.path("student.accdb")
> channel<-odbcConnectAccess2007(db)
> data<-sqlFetch(channel,"stud")
> data
ID Name M1 M2 M3 M4 M5 Result
1 7 Radha 85 65 92 50 62 Pass
2 8 Reka 75 85 96 75 85 Pass
Ответ 6
Альтернативой прямому доступу к нему может быть облегчение экспорта данных из MS Access. По крайней мере, последний MS Access позволяет сохранять различные этапы экспорта. Можно просто быстро запустить экспорт различных запросов/таблиц.
Я знаю, что это не отвечает на вопрос, но может быть обходным путем, если вы не запускаете RODBC.