2011-08-18 238 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編碼並不適用於此

相關問題