2011-08-18 29 views
14

La documentación RODBC sugiere que es posible, pero no estoy seguro de cómo leer los datos de un archivo de Microsoft Access (el nuevo formato .accdb) con este paquete en R (en Debian GNU/Linux). La viñeta habla sobre los controladores, pero no entiendo muy bien cómo puedo ver qué controladores están instalados y, en particular, si tengo un controlador instalado para acceder a esos archivos .accdb.¿Cómo se leen los datos de los archivos de base de datos .accdb de Microsoft Access en R?

¿Qué código utiliza para leer los datos de los archivos .accdb? Indique en qué plataforma se encuentra y si debe instalar un controlador especial.

+0

Por lo que he visto, no hay soporte ACE disponible en Linux, solo Jet 4. Por lo tanto, necesitaría Formato MDB en lugar de formato ACCDB. Pero soy programador de Access y usuario de Windows, así que podría haberlo perdido, pero no ha aparecido en SO. –

Respuesta

4

El título de la página que enlazó, RODBC: ODBC Database Access, puede ser engañoso. El acceso no significa MS Access; en ese título, acceso significa conectividad. RODBC es un administrador ODBC para R. Sirve como mediador para proporcionar comunicación entre R y el controlador ODBC para su base de datos de destino. Entonces, para GNU/Linux, aún necesitaría un controlador ODBC para los archivos de la base de datos de MS Access ... RODBC no proporciona uno.

Sin embargo, no conozco ningún controlador MS Access ODBC libre (como en libertad y/o cerveza) para Linux. Easysoft vende one, pero no es barato. Puede haber ofertas de otros proveedores también; No he buscado.

Puede ser más fácil usar una máquina con Windows para exportar su ACCDB a un formato que R pueda usar. O ejecute R on Windows en lugar de Linux.

+0

Me perdí el bit "GNU/Linux". Tienes razón, ninguna posibilidad en Linux. – Patrick

+0

Bueno, vi cosas como esta publicación, donde acceden a los archivos .mdb: http://rforge.org/2009/08/07/open-access-mdb-file-with-rodbc/ Pero entiendo el punto que necesito un controlador de Windows para él en este momento ... de hecho, este método odbcConnectAccess() parece no estar disponible en mi paquete rodbc ... ¡gracias por los punteros! –

3

Necesitará los controladores para conectarse Acceso a la interfaz ODBC. Deben estar en su sistema si tiene instalado Access. De lo contrario, descargue Access Database Engine de Microsoft. A continuación, cree su conexión de datos en ODBC (Es posible que necesite ejecutar el c:\windows\sysWOW64\odbcad32.exe de 32 bits si ejecuta Windows de 64 bits). Tenga en cuenta que este método no funciona en GNU/Linux. Los tiempos de ejecución son solo de Windows, como se menciona en @HansUp a continuación.

En cuanto al código, es probable que comience con odbcConnect(dsn, uid = "", pwd = "", ...), y la documentación puede ayudar con los detalles.

3

ODBC es un sistema un poco 'plug and pray' que conecta diferentes ladrillos.

RODBC le permite obtener algo de un proveedor ODBC en R. Lo que aún necesita es (a falta de una palabra mejor) controlador de exportación ODBC del sistema de base de datos en cuestión. Lo que necesita en su sistema operativo --- así que creo que con la combinación de Access-in-Linux no tiene suerte. Solo Windows.

Las personas han logrado acceder a SQL Server utilizando controladores FreeTDS (para el protocolo TDS que subyace a Sybase y a través de una licencia anterior también MS-SQL), pero por lo general es una lucha para ponerlo en marcha.

1

Una alternativa para acceder directamente puede ser facilitar la exportación de datos desde MS Access. Al menos, el MS Access más reciente permite guardar los diversos pasos de exportación. Uno puede simplemente ejecutar la exportación de varias consultas/tablas con bastante rapidez.

Sé que esto no responde la pregunta, pero podría ser una solución si no se ejecuta 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

por favor explique su código también. Gracias –

5

Para importar un archivo de Microsoft Access post-2007 (.accdb) en R, se puede usar el paquete RODBC.

Para un archivo .accdb llamado "foo.accdb" con las siguientes tablas: 'barra' y 'bin', almacenados en el escritorio de la computadora de 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

El mejor método que trabajó para mí

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

Esto obtendrá los datos de el "2011" dentro del archivo de inscripción. Pero la codificación UTF no funciona con esto.

Cuestiones relacionadas