Para crear a conexión a unha base de datos SQL Server dende R, debemos xerar un conector coa base de datos para posteriormente crear a conexión e poder levar a cabo as operacións:
1.- Descargamos os controladores que necesitemos. Deixo algúns exemplos:
- JTDS: http://jtds.sourceforge.net/
- Oracle: https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html
- Microsoft: https://docs.microsoft.com/es-es/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15
- Amazon: https://docs.aws.amazon.com/emr/latest/ReleaseGuide/HiveJDBCDriver.html
2.- Descomprimir os controladores nun directorio, que no nos caso de vai denominar «drivers» e vase situar dentro do sistema Linux no directorio «/home/usuario». Neste caso o que se fixo foi descomprimir todos os controladores na mesma carpeta deixando só os arquivos «jar» todos xuntos
3.- Dentro de R, creamos unha conexión, para o cal debemos seguir os seguintes pasos para evitar problemas de clase en Java. Declaramos as variables que imos empregar:
dirdrivers <- 'drivers'
mssql_addr <- 'direccion_servidor_mssql'
mssql_port <- 'porto_servidor_mssql'
usuario <- 'usuario_con_permisos_sql'
clave <- 'clave_usuario_con_permisos_sql'
Para declarar o directorio cos drivers, recordar facelo coa ruta completa. Neste caso «/home/usuario/drivers». No caso dun sistema en Windows, a rura debe ser do tipo «C:/Users/Documents/drivers» por exemplo. Finalmente creamos o conector para a nosa base de datos en Microsoft SQL Server, neste caso empregando a clase de jtds:jdbc:
conexion <-
dbConnect(
drv =
RJDBC::JDBC(
driverClass = "net.sourceforge.jtds.jdbc.Driver",
classPath =
list.files(
path = dirdrivers,
pattern = "jar$",
full.names = TRUE
),
identifier.quote="'"
),
url =
paste0(
'jdbc:jtds:sqlserver://',
mssql_addr,
':',
mssql_port
),
user = usuario,
password = clave
)
4.- Finalmente podemos levar a cabo as consulta á base de datos en SQL Server dende un script de R a través co controlador JTDS:
consulta <- 'SELECT * FROM taboa'
resultado <- dbGetQuery(conexion, consulta)