Как прочитать данные из файлов базы данных Microsoft Access .accdb в R? - PullRequest
16 голосов
/ 18 августа 2011

Документация RODBC предполагает, что это возможно, но я не уверен, как читать данные из файла Microsoft Access (новый формат .accdb) с этим пакетом в R (в Debian GNU / Linux)).Виньетка говорит о драйверах, но я не совсем понимаю, как я могу увидеть, какие драйверы установлены, и, в частности, если у меня установлен драйвер для доступа к этим .accdb файлам.

Какой код делатьВы используете для чтения данных из .accdb файлов?И, пожалуйста, укажите, на какой платформе вы находитесь, и если вам нужно было установить специальный драйвер.

Ответы [ 7 ]

7 голосов
/ 11 мая 2016

Чтобы импортировать файл Microsoft Access после. 2007 (.accdb) в R, вы можете использовать пакет RODBC.

Для файла .accdb с именем "foo.accdb" со следующими таблицами:«bar» и «bin», хранящиеся на рабочем столе компьютера Джона Доу:

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
4 голосов
/ 19 августа 2011

Название страницы, на которую вы ссылались, 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.

3 голосов
/ 18 августа 2011

ODBC - это система «подключи и молись», соединяющая разные кирпичи.

RODBC позволяет вам получить что-то от поставщика ODBC в R. Что вам еще нужно, так это (из-за отсутствия лучшего слова) ODBC-экспортный драйвер рассматриваемой системы баз данных.Что вам нужно в вашей ОС --- поэтому я думаю, что с комбинацией Access-into-Linux вам не повезло.Только для Windows.

Людям удалось получить доступ к SQL Server с помощью драйверов FreeTDS (для протокола TDS, лежащего в основе Sybase, и через раннюю лицензию, также MS-SQL), но это, как правило, борьба за его развитие.

3 голосов
/ 18 августа 2011

Вам понадобятся драйверы для подключения Доступа к интерфейсу ODBC.Они должны быть в вашей системе, если у вас установлен Access.Если нет, загрузите Access Database Engine от Microsoft.Затем создайте подключение для передачи данных в ODBC (вам может потребоваться запустить 32-разрядную c:\windows\sysWOW64\odbcad32.exe, если работает 64-разрядная версия Windows).Обратите внимание, что этот метод не работает в GNU / Linux.Среда выполнения - только для Windows, как упоминается @HansUp ниже.

Что касается кода, вы, вероятно, начнете с odbcConnect(dsn, uid = "", pwd = "", ...), и документация может помочь с подробностями.

2 голосов
/ 30 января 2014
> 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
1 голос
/ 08 марта 2018

Лучший метод, который работал для меня

library(RODBC)
datab<-file.path("Enroll.accdb")
channel<-odbcConnectAccess2007(datab)
table<-sqlFetch(channel,"2011")

При этом будут получены данные из «2011» внутри файла регистрации. Но кодировка UTF не работает с этим.

1 голос
/ 11 июня 2012

Альтернативой прямому доступу к нему может быть упрощение экспорта данных из MS Access. По крайней мере, самый последний MS Access позволяет сохранять различные этапы экспорта. Затем можно довольно быстро запустить экспорт различных запросов / таблиц.

Я знаю, что это не отвечает на вопрос, но может быть обходным решением, если вы не запускаете RODBC.

...