R

Uso de JDBC en R para conexión a base de datos

La utilización de JDBC en R para acceder a las bases de datos ofrecer grandes ventajas frente a la utilización de paquetes específicos. En primer lugar, al utilizar un API estándar es más fácil cambiar el motor de base de datos. Por otro lado, al utilizar una maquina virtual Java la solución se hace independientemente del sistema operativo.

Introducción

En muchas soluciones analíticas es necesario poder importar los datos desde una base de datos. Cuando los datos no cambian se puede trabajar con una extracción de estos, pero no en caso contrario. En R existen múltiples paquetes para acceder a diferentes bases de datos como pueden ser: RSQLite, RPostgres o ROracle. La utilización de un paquete diferente para cada motor de base de datos presenta un problema cuando se desea cambiar el mismo. En la mayoría de los casos se tendrá que revisar el código de utilizado y puede ser necesario reescribirlo. Una solución a este problema se puede encontrar en el paquete RJDBC.

El paquete RJDBC utiliza JDBC para acceder a los datos. JDBC (Java Database Connectivity) es un API que permite ejecutar operaciones sobre bases de datos desde Java. Al utilizar Java la conexión es independientemente del sistema operativo en el que se ejecute. Los drivers necesarios para acceder a las bases de datos son Java y existen para la mayoría de las bases de datos del mercado.

Instalación de RJDBC en R

El paquete RJDBC se encuentra disponible en el CRAN, por lo que únicamente se ha de utilizar el comando:

install.packages("RJDBC")

Acceso a base de datos JDBC en R

El proceso de conexión a las bases de datos desde R es tremendamente sencillo. Inicialmente se ha de cargar importar la librería en el espacio de trabajo. Una vez realizado este proceso se ha de cargar el controlador para la base de datos y abrir una conexión con este.

# Se carga el paquete para utilizar los drivers JDBC
library(RJDBC)

# Carga del driver
drv = JDBC("java.class", "javaClassFile.jar")

# Apertura de la conexión
conn = dbConnect(drv, "URL:Database", "username", "password")

La cadena de texto "java.class" depende de la base de datos, como ejemplo se puede enumerar las mas populares:

  • SQL Server: com.microsoft.sqlserver.jdbc.SQLServerDriver
  • Oracle: oracle.jdbc.driver.OracleDriver
  • SQLite: org.sqlite.JDBC
  • Postgres: org.postgresql.Driver
  • MySQL: com.mysql.jdbc.Driver

Por otro lado, la URL a la base de datos se ha de configurar de manera diferente dependiendo del tipo de base datos utilizado. Al igual que antes se pueden enumerar las estructuras de las bases de datos más populares:

  • SQL Server: jdbc:sqlserver://serverName
  • Oracle: jdbc:oracle:thin:@<host>:<port default=1521>:<SID>
  • SQLite: jdbc:sqlite:pathToFilename.db
  • Postgres: jdbc:postgresql://serverName:5432/mydbname
  • MySQL: jdbc:mysql://serverName/mydbname

La utilización de la base de datos se realiza mediante las funciones del paquete DBI, las consultas y resto de accesos a la base de datos se realizan con los comandos de este paquete.

Finalmente, al finalizar el trabajo con la base de datos se ha de cerrar la conexión.

# Cierre de la conexión
dbDisconnect(conn)

Ejemplos de uso

A continuación, se muestra múltiples ejemplos de cómo se ha de realizar la conexión a diferentes bases de datos. En concreto se muestra las conexiones a SQLite, Oracle y Postgres.

SQLite

drv  = JDBC('org.sqlite.JDBC', fileName)
jdbcStr = paste('jdbc:sqlite:', fileName, sep='')
con     = dbConnect(drv, jdbcStr, '', '')

Oracle

drv     = JDBC('oracle.jdbc.driver.OracleDriver', fileName)
jdbcStr = paste('jdbc:oracle:thin:@', server, ':', port, ':', sid, sep='')
con     = dbConnect(drv, jdbcStr, user, pass)

Postgress

drv     = JDBC( 'org.postgresql.Driver', fileName)
jdbcStr = paste('jdbc:postgresql://' server ':' port '/' database',  sep='')
con     = dbConnect(drv, jdbcStr, user, pass)

Conclusiones

En esta entrada se ha visto cómo utilizar el paquete RJDBC para acceder a bases de datos desde R. Al estar basado el Java se garantiza que el código se puede utilizar en cualquier sistema en el que se encuentre tanto Java como R. Permitiendo también trabajar con cualquier base de datos.

Imágenes: Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

1 día ago

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…

2 días ago

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

6 días ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

1 semana ago

Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar

Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…

2 semanas ago

WOE e IV: La Base Matemática del Credit Scoring

Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…

2 semanas ago

This website uses cookies.