Подключить базу данных MS Access к R

Я хочу подключить базу данных MS Access к R с пакетом DBI. Я пробую это:

library(DBI) con <- dbConnect(odbc::odbc(), "BASE_MEPSA")

и у меня эта ошибка

Ошибка: nanodbc / nanodbc.cpp: 950: HY024: [Microsoft] [Pilote ODBC Microsoft Access] «(Inconnu)»

Но с RODBC у меня проблем нет

library(RODBC) base1<-odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/IPS/Desktop/divers/dt/stateduc_R/BASE_MEPSA.mdb")

Как я могу подключить MS Access к R с пакетом DBI?


person Roland Samati    schedule 22.08.2017    source источник


Ответы (2)


Является ли «BASE_MEPSA» именем имени источника данных (DSN)? Вы бы создали это в своем администраторе источника данных ODBC. Если да, то я всегда могу успешно связаться с:

library(DBI) 
cn <- dbConnect(odbc::odbc(), dsn="BASE_MEPSA")

Кроме того, вам необходимо убедиться, что вы используете ту же архитектуру. Это означает, что вы должны использовать x32-версии R, Access и ODBC Data Source Admin, если ваша версия Access - x32. Вы должны изменить это в глобальных настройках для R, так как по умолчанию используется x64.

Также попробуйте использовать путь к файлу, который вы использовали для RODBC.

cn <- dbConnect(odbc::odbc(), DBQ="C:/Users/IPS/Desktop/divers/dt/stateduc_R/BASE_MEPSA.mdb")
person Davis Vaughan    schedule 22.08.2017
comment
эта работа завершена: библиотека (DBI) con ‹- dbConnect (odbc :: odbc (), .connection_string = Driver = {Microsoft Access Driver (* .mdb, * .accdb)}; Dbq = C: / Users / IPS / Desktop /divers/dt/stateduc_R/BASE_MEPSA.mdb;) - person Roland Samati; 31.08.2017

library(RODBC) 
mdbConnect<-odbcConnectAccess("D:/SampleDB1/sampleDB1.mdb")


# Load RODBC package
library(RODBC)

# Connect to Access db
# for 32-bit windows
channel <- odbcConnectAccess("C:/your_path/Database1.accdb")

# Get data
data <- sqlQuery(channel , paste ("select * from Table1"))



#load package
library("RODBC") 

# for 64-bit windows
#connect database.
db<-file.path("C:/Users/Excel/Desktop/Coding/Microsoft Access/Split_and_Transpose.accdb") 

#internal RODBC function
channel<-odbcConnectAccess2007(db) 

#read particular table from Access database file.
dataSetName<-sqlFetch(channel,"Table1") 

#do not forget this, otherwise you lock access database from editing.
close(channel) 

Это хороший ресурс.

https://cran.r-project.org/web/packages/RODBC/vignettes/RODBC.pdf

person ASH    schedule 30.08.2017