Leer bases de datos SQL en R

El paquete DBI
es una interfaz para comunicar R y sistemas de gestión de bases de datos relacionales. Este paquete puede conectar a MySQL, PostgreSQL, SQLite, MariaDB y a otras bases de datos a través de sus propios drivers. En este tutorial aprenderás a conectarte a diferentes bases de datos, a realizar consultas y a agregar y eliminar tablas.
Conexiones a bases de datos SQL
La función dbConnect
de DBI
crea una conexión a una base de datos a través de un driver y los parámetros de autenticación necesarios, como el nombre de usuario, la contraseña, el host, el puerto y el nombre de la base de datos o del fichero de base de datos. En las siguientes subsecciones repasaremos cómo conectarse a las bases de datos más habituales.
MySQL
Para conectarte a una base de datos MySQL tienes que especificar el controlador MySQL de RMySQL
y especificar tus parámetros de autenticación.
PostgreSQL
Para conectarte a una base de datos PostgreSQL necesitarás utilizar RPostgreSQL::PostgreSQL()
y tus parámetros de autenticación.
MariaDB
Una conexión a MariaDB puede hacerse a través del driver RMariaDB::MariaDB()
. Puedes conectarte a una base de datos remota con tus credenciales o estableciendo un grupo en tu archivo .my.cnf
, mariadb.cnf
o my.ini
(el archivo de opciones por defecto de MariaDB).
SQLite
La última conexión que revisaremos es a SQLite a través de RSQLite::SQLite()
. En este escenario sólo necesitas especificar el nombre de tu base de datos.
Puedes comprobar las conexiones con dbListConnections(dvr)
. Desafortunadamente, esta es una función obsoleta y no todos los controladores implementan este método, por lo que tendrás que hacer un seguimiento de tus conexiones por ti mismo.
Leer tablas
En esta sección vamos a utilizar la siguiente base de datos SQLite de ejemplo llamada db
que contiene dos tablas. Puedes utilizar el siguiente código para crearla en tu directorio de trabajo:
Lista de tablas disponibles
Puedes listar las tablas disponibles con la función dbListTables
.
Como ya hemos dicho, esta base de datos tiene dos tablas llamadas "tabla_1"
y "tabla_2"
.
Lista de campos disponibles
También puedes listar los campos de cada una de las tablas con dbListFields
.
Por ejemplo, la primera tabla contiene dos campos denominados "x"
y "LETRAS"
.
Leer tablas específicas con dbReadTable
Una vez que conozcas los nombres de las tablas de tus bases de datos puedes leerlas con la función dbReadTable
. En el siguiente ejemplo estamos leyendo la tabla llamada "tabla_1"
.
Ejecutar consultas (queries)
Es posible ejecutar consultas SQL a la base de datos con la función dbSendQuery
. A continuación, tendrás que utilizar la función dbFetch
para obtener los registros deseados de la consulta. Finalmente, necesitarás liberar los recursos con dbClearResult
.
En el siguiente ejemplo estamos extrayendo 5 filas del campo llamado x
de la tabla llamada tabla_1
:
Puedes obtener más información sobre SQL y las consultas SQL en el siguiente sitio web: https://sqlearning.com/
Agregar y eliminar tablas
Las funciones dbWriteTable
y dbRemoveTable
permiten añadir o eliminar tablas de la base de datos. Si quieres añadir una nueva tabla llamada tabla_3
a la base de datos puedes hacer lo siguiente:
Ahora puedes comprobar que la tabla se ha añadido a la base de datos con dbListTables
.
Por último, considera que quieres eliminar la segunda tabla. Para ello puedes escribir lo siguiente:
Cerrar una conexión
Cuando termines tu trabajo puedes cerrar la conexión a la base de datos con la función dbDisconnect
. Si estabas trabajando con una base de datos temporal, ésta será eliminada.
También puedes cerrar todas las conexiones listando todas las conexiones con dbListConnections
y cerrando todas a la vez siguiendo el ejemplo de abajo. Esto sólo está disponible para algunos controladores, ya que dbListConnections
es una función obsoleta.