如何从Microsoft Access .accdb数据库文件中读取数据到R?

时间:2011-08-18 06:32:06

标签: database r ms-access dataset

RODBC文档表明它是可能的,但我不确定如何将带有此软件包的Microsoft Access(新的.accdb格式)文件中的数据读入R(在Debian GNU / Linux上) )。小插图讨论了驱动程序,但我不太明白我如何看到安装了哪些驱动程序,特别是如果我安装了驱动程序以便访问这些.accdb文件。

您使用什么代码从.accdb文件中读取数据?请说明您所使用的平台以及是否必须安装特殊驱动程序。

8 个答案:

答案 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)

我的解决方案(我找到的最简单的方法):

  • 从Micosoft安装“ Access数据库引擎”
  • 使用ODBC 32b工具在Windows管理工具中配置与Access数据库(mdb或accdb)的连接。我也可以使用c:\​​ windows \ sysWOW64 \ odbcad32.exe
  • 以32b模式运行RStudio;它可以在RStudio设置中修复(更改后重新启动RStudio)
  • 最后,RODBC函数成功运行。

注意:它仅适用于Windows,不适用于Linux。我个人使用Windows作为Xubuntu中的Virtual Box来宾。