[R-es] FW: acelerar conexión con RODBC

Carlos J. Gil Bellosta cgb en datanalytics.com
Jue Mayo 8 10:16:51 CEST 2014


Hola, ¿qué tal?

ODBC (y por extensión, RODBC) funciona razonablemente bien para
extraer datos. Insertarlos en una base de datos es más problemático.
No obstante, ahí van unos cuantos consejos.

Primero, asegúrate de que estás usando la opción fast = TRUE a la hora
de cargar los datos. Está activada por defecto, pero asegúrate de
ello. En cualquier caso, la inserción de datos se hace registro a
registro.

Segundo, verás que sugieren en todos los sitios eliminar índices,
triggers, etc. en la tabla de destino mientras se realiza la inserción
y recrearlos después. Pero es probable que no tengas ninguno.

Finalmente, (y este es el más importante), las bases de datos tienen
mecanismos para insertar datos rápidamente (p.e., a partir de ficheros
.csv) al margen del estándar ODBC. Y que por lo tanto no forman parte
de RODBC. Puede que encuentres algo en RMySQL (no lo he usado). Pero
igual te conviene exportar tus datos a un fichero de texto y usar lo
que se explica en

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

programáticamente desde R.

Salud y suerte,

Carlos J. Gil Bellosta
http://www.datanalytics.com

El día 7 de mayo de 2014, 23:56, Fernando Fernández
<fernando.fernandez.gonzalez en gmail.com> escribió:
> Hola Patricio,
>
> Yo trabajo mucho con RMySQL, tanto en windows como en unix y mi
> recomendación es que hagas precisamente lo contrario de lo que estás
> haciendo. El trabajo "fuerte" déjaselo a la base de datos. Haz todo el
> procesamiento que puedas en MySQL y carga en R solo lo imprescindible. A mí
> esto me ha dado muy buenos resultados. Eso si, aprovecho R para crear
> dinámicamente algunas queries que puedan ser un poco más complejas, por
> ejemplo, hacer un "reshape" de formato long a formato wide, la mayoría de
> las veces lo hago sobre la propia base de datos, escribiendo dinámicamente
> una query que lo haga. Respecto de la lentitud al escribir de vuelta en la
> base de datos, comentas que has conseguido instalar RMySQL pero que estás
> utilizando RODBC para escribir en la bbdd. ¿Por qué no usas RMySQL?
>
> Saludos,
>
> Fernando.
>
>
> El 7 de mayo de 2014, 21:56, Marcuzzi, Javier Ruben <
> javier.ruben.marcuzzi en gmail.com> escribió:
>
>> Estimado Patricio Vireri
>>
>> No mire Rmysql hoy pero por esas cosas de la vida decidieron no
>> compilarlo en windows, hay varias alternativas, pero particularmente no
>> use ninguna.
>>
>> MariaDB ahora tiene grafos, por si le sirve.
>>
>> Si compilo Rmysql no es un principiante, entonces pregunta de
>> principiante ¿si solo usa odbc? Le pregunto esto porque cuándo yo usaba
>> mac compre a una empresa " conexión odbc" para base de datos, mysql
>> tiene odbc y en R hay una librería para Rmsql en dll que no estaba
>> disponible, de pronto puede saltar Rmysql y por odbc leer y escribir en
>> MariaDB a una mayor velocidad.
>>
>> Javier Marcuzzi
>>
>> El 07/05/2014 03:07 p.m., Patricio Fuenmayor Viteri escribió:
>> > Ok... gracias por las respuestas ...Bueno estoy tratando de usar en
>> windows ... lamentablemente requiere un poco de trabajo para compilar la
>> libreria .. pero ya lo he logrado  .. Mysql lo uso como repositorio
>> historico de información ... y todo el trabajo fuerte y dificil lo dejo a R
>> .. . La data la extraigo de la BD mediante RODBC (base en SQLServer) la
>> proceso y trabajo en data.frames, usando tanto sqldf y plyr. y las
>> respuestas las almaceno en Mysql, he aqui donde tengo el lio, tarda mucho
>> al insertar los datos desde R a Mysql con RODBC.Si tengo novedades les
>> comento para que quede como ayuda o guia a los lectores...esto es lo que me
>> encanta de R ... tengo tantas alternativas para solucionar un mismo
>> problema ...
>> > From: patricio.fuenmayor en outlook.com
>> > To: r-help-es en r-project.org
>> > Subject: acelerar conexión con RODBC
>> > Date: Wed, 7 May 2014 10:02:47 -0500
>> >
>> >
>> >
>> >
>> > Hola a todos...estoy usando MariaDb como base de datos (similares
>> caracteristicas a MySQL), y la conexión entre R y esta con RODBC.¿Existe
>> alguna forma de incrementar la conexión para carga de datos ya que son
>> largos, ejm: 3000 registros en 1 minuto...Si conocen de esto o me pueden
>> sugerir alternativas, estaré agradecido.
>> > Patricio.
>> >       [[alternative HTML version deleted]]
>> >
>> >
>> >
>> > _______________________________________________
>> > R-help-es mailing list
>> > R-help-es en r-project.org
>> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>>         [[alternative HTML version deleted]]
>>
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>
>         [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



Más información sobre la lista de distribución R-help-es