RODBC文档表明它是可能的,但我不确定如何将带有此软件包的Microsoft Access(新的.accdb
格式)文件中的数据读入R(在Debian GNU / Linux上) )。小插图讨论了驱动程序,但我不太明白我如何看到安装了哪些驱动程序,特别是如果我安装了驱动程序以便访问这些.accdb
文件。
您使用什么代码从.accdb
文件中读取数据?请说明您所使用的平台以及是否必须安装特殊驱动程序。
答案 0 :(得分:7)
要将2007年后的Microsoft Access文件(.accdb)导入R,您可以使用RODBC
包。
对于名为“foo.accdb”的.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
答案 1 :(得分:4)
您链接的网页标题 RODBC:ODBC数据库访问可能会产生误导。访问并不意味着MS Access;在该标题中,访问意味着连接。 RODBC是R的ODBC管理器。它充当调解器,为目标数据库提供R和ODBC驱动程序之间的通信。所以对于GNU / Linux,你仍然需要一个用于MS Access数据库文件的ODBC驱动程序...... RODBC没有提供一个。
但是,我不知道任何免费的(如在自由和/或啤酒中)用于Linux的MS Access ODBC驱动程序。 Easysoft卖one,但它并不便宜。也可能有来自其他供应商的产品;我没看过。
使用Windows机器将ACCDB导出为R可以使用的格式可能更容易。或者运行R on Windows而不是Linux。
答案 2 :(得分:3)
您需要驱动程序才能将Access连接到ODBC接口。如果您安装了Access,这些应该在您的系统上。如果没有,请从Microsoft下载Access Database Engine。然后在ODBC中创建数据连接(如果运行64位Windows,则可能需要运行32位c:\windows\sysWOW64\odbcad32.exe
)。请注意,此方法不适用于GNU / Linux。运行时仅限Windows,如下面的@HansUp所述。
至于代码,您可能会从odbcConnect(dsn, uid = "", pwd = "", ...)
开始,文档可以提供详细信息。
答案 3 :(得分:3)
ODBC是一个连接不同砖块的“即插即用”系统。
RODBC允许您从ODBC提供程序中获取某些内容。您仍需要的是(缺少更好的单词)数据库系统的ODBC导出驱动程序。您在操作系统上需要哪些---所以我认为使用Access-into-Linux组合你没有运气。仅Windows。
人们已经设法使用FreeTDS驱动程序访问SQL Server(对于Sybase底层的TDS协议以及早期的许可证也是MS-SQL),但通常都是为了实现它。
答案 4 :(得分:2)
> 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
答案 5 :(得分:1)
直接访问它的替代方法可能是促进从MS Access导出数据。至少最新的MS Access允许保存各种导出步骤。然后,可以非常快速地运行各种查询/表的导出。
我知道这不会回答这个问题,但如果你没有让RODBC运行,可能会解决这个问题。
答案 6 :(得分:1)
对我有用的最佳方法
library(RODBC)
datab<-file.path("Enroll.accdb")
channel<-odbcConnectAccess2007(datab)
table<-sqlFetch(channel,"2011")
这将从&#34; 2011&#34;中获取数据。在注册文件中。但UTF编码并不能解决这个问题。
答案 7 :(得分:-1)
我的解决方案(我找到的最简单的方法):
注意:它仅适用于Windows,不适用于Linux。我个人使用Windows作为Xubuntu中的Virtual Box来宾。