2011-08-18 29 views
14

La documentazione RODBC suggerisce che è possibile, ma non sono sicuro di come leggere i dati da un Microsoft Access (il nuovo formato .accdb) con questo pacchetto in R (su Debian GNU/Linux). La vignetta parla di driver, ma non capisco come posso vedere quali driver sono installati e, in particolare, se ho un driver installato per accedere ai file .accdb.Come leggere i dati dai file di database accdb di Microsoft Access in R?

Quale codice si utilizza per leggere i dati dei file .accdb? E si prega di indicare su quale piattaforma si è e se è stato necessario installare un driver speciale.

+0

Per quanto ho visto, non esiste un supporto ACE disponibile su Linux, solo Jet 4. Quindi, è necessario Formato MDB invece del formato ACCDB, ma io sono un programmatore di Access e un utente Windows, quindi avrei potuto mancarlo, ma non è venuto su SO –

risposta

4

Il titolo della pagina collegata, RODBC: Accesso al database ODBC, potrebbe essere fuorviante. Accesso non significa accesso MS; in quel titolo l'accesso significa connettività. RODBC è un gestore ODBC per R. Serve da mediatore per fornire la comunicazione tra R e il driver ODBC per il database di destinazione. Quindi per GNU/Linux, avresti ancora bisogno di un driver ODBC per i file di database MS Access ... RODBC non ne fornisce uno.

Tuttavia, non conosco driver ODBC gratuiti per MS Access (come in libertà e/o birra) per Linux. Easysoft vende one, ma non è economico. Possono esserci offerte anche da altri venditori; Non ho guardato

Potrebbe essere più semplice utilizzare una macchina Windows per esportare l'ACCDB in un formato che R può utilizzare. Oppure esegui R on Windows anziché Linux.

+0

Ho perso il bit "GNU/Linux". Hai ragione - nessuna possibilità su Linux. – Patrick

+0

Bene, ho visto cose come questo post, dove accedono ai file .mdb: http://rforge.org/2009/08/07/open-access-mdb-file-with-rodbc/ Ma, ho capito che ho bisogno di un driver per Windows in questo momento ... anzi, questo metodo odbcConnectAccess() non sembra disponibile nel mio pacchetto rodbc ... grazie per i puntatori! –

3

Avrete bisogno dei driver per connettere l'accesso all'interfaccia ODBC. Questi dovrebbero essere sul tuo sistema se hai installato Access. In caso contrario, scaricare Access Database Engine da Microsoft. Quindi creare la connessione dati in ODBC (potrebbe essere necessario eseguire il 32-bit c:\windows\sysWOW64\odbcad32.exe se in esecuzione a 64 bit di Windows). Nota che questo metodo non funziona su GNU/Linux. I runtime sono solo Windows, come indicato da @HansUp di seguito.

Per quanto riguarda il codice, probabilmente inizierete con odbcConnect(dsn, uid = "", pwd = "", ...) e la documentazione può aiutare con i dettagli.

3

ODBC è un po 'di sistema "plug and pray" che collega diversi mattoni.

RODBC consente di ottenere qualcosa da un provider ODBC in R. Ciò che è ancora necessario è il driver di esportazione ODBC (per mancanza di una parola migliore) del sistema di database in questione. Di quale avete bisogno sul vostro sistema operativo --- quindi penso che con la combinazione Access-in-Linux siete senza fortuna. Solo per Windows.

Le persone sono riuscite ad accedere a SQL Server utilizzando i driver FreeTDS (per il protocollo TDS su cui è basato Sybase e tramite una licenza precoce anche MS-SQL) ma è usualluy un combattimento per farlo funzionare.

1

Un'alternativa all'accesso diretto potrebbe essere quella di facilitare l'esportazione dei dati da MS Access. Almeno il più recente MS Access consente di salvare i vari passaggi di esportazione. Si può semplicemente eseguire l'esportazione di varie query/tabelle abbastanza velocemente.

So che questo non risponde alla domanda, ma potrebbe essere una soluzione alternativa se non si esegue 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

per favore spiega anche il tuo codice. grazie –

5

Per importare un file di Microsoft Access post-2007 (accdb) in R, è possibile utilizzare il pacchetto RODBC.

Per un file .accdb denominato "foo.ACCDB" con le seguenti tabelle, "Bar" e "bin", memorizzati sul desktop del computer di 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

Il metodo migliore che ha funzionato per me

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

Questo sarà recuperare i dati da il "2011" all'interno del file di registrazione, ma la codifica UTF non funziona con questo

Problemi correlati