2011-08-18 201 views
14

RODBC文件表明,它是可能的,但我不知道该如何解读从Microsoft Access(新.accdb格式)的数据与此包文件转换成R(在Debian GNU/Linux的)。小插曲讲述的是驱动程序,但我不太明白我如何看到安装了哪些驱动程序,特别是,如果我安装了驱动程序来访问这些.accdb文件。如何将数据从Microsoft Access .accdb数据库文件读入R?

您使用什么代码从.accdb文件中读取数据?并且请指出您的平台以及是否需要安装特殊的驱动程序。

+0

就我所见,Linux上没有ACE支持,只有Jet 4.因此,您需要MDB格式,而不是ACCDB格式,但我是一个Access程序员和Windows用户,所以我可能错过了它 - 但它没有出现在SO。 –

回答

4

您链接的页面的标题,RODBC:ODBC数据库访问,可能会引起误解。访问不意味着MS Access;在那个标题访问意味着连接。 RODBC是R的一个ODBC管理器。它作为介体为R和目标数据库的ODBC驱动程序之间提供通信。因此,对于GNU/Linux,您仍然需要用于MS Access数据库文件的ODBC驱动程序...... RODBC不提供一个。

不过,我不知道任何免费的(如在自由和/或啤酒)的MS Access ODBC驱动程序的Linux版本。 Easysoft销售one,但它并不便宜。也可能有来自其他供应商的产品;我没看过。

使用Windows机器将ACCDB导出为R可以使用的格式可能更容易。或者运行R on Windows而不是Linux。

+0

我错过了“GNU/Linux”位。你是对的 - 在Linux上没有机会。 – Patrick

+0

嗯,我看到这样的帖子,他们在哪里访问.mdb文件:http://rforge.org/2009/08/07/open-access-mdb-file-with-rodbc/但是,我明白了这一点我现在需要一个Windows驱动程序......实际上,这个odbcConnectAccess()方法似乎不适用于我的rodbc包... thanx指针! –

3

您需要将驱动程序连接到ODBC接口。如果您安装了Access,这些应该在您的系统上。如果没有,请从Microsoft下载Access Database Engine。然后在ODBC中创建数据连接(如果运行64位Windows,则可能需要运行32位c:\windows\sysWOW64\odbcad32.exe)。请注意,这种方法在GNU/Linux上不起作用。运行时只是Windows,如下面的@HansUp所述。

至于代码,你很可能会与odbcConnect(dsn, uid = "", pwd = "", ...)开始,该文档可从细节帮助。

3

ODBC是一种连接不同砖块的'即插即用'系统。

RODBC让你得到从ODBC提供到R.东西是什么,你仍然需要在有关数据库系统的(因为缺乏一个更好的词)ODBC出口驱动程序。你需要在你的操作系统上使用---所以我认为使用Access-in-Linux组合你没有运气。仅Windows。

人们使用管理驱动freetds的(针对TDS协议底层Sybase和通过早期的许可证也MS-SQL)来访问SQL Server,但它是一个usualluy打得到它去。

1

直接访问它的替代方案可能是促进从MS Access中导出数据。至少最近的MS Access允许保存各种导出步骤。然后可以很简单地运行各种查询/表的输出。

我知道这并不能回答这个问题,但可能是,如果你没有得到RODBC运行的解决方法。

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 
+2

请解释你的代码。谢谢 –

5

要导入一个2007年后的Microsoft Access文件(.ACCDB)为R,则可以使用RODBC包。

对于名为“foo”的.accdb文件。ACCDB”用下面的表格中,‘酒吧’和‘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 
0

是为我工作

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

这将获取从数据的最佳方法但是UTF编码并不适用于此

相关问题