R中的个人数据库连接包

Personal Database Connection Package in R

我创建了一个包来简化在 R 中开始一个新项目时建立数据库连接的过程。几乎每个项目都需要我连接到一个专有数据库,这意味着回顾文件并复制粘贴在我之前所做的并将 sql 驱动程序复制到新项目文件夹中。理想情况下,我想使用以下代码开始一个新项目:

library(MyConnections)

conn <- MyConnections::get_conn()

我有一个适用于不需要我读取驱动程序文件的数据库连接的包函数。

get_mysql_conn <- function(){
  require(RMySQL)
  dbConnect(MySQL(),
            user = 'user',
            password = "password",
            dbname = 'dbname',
            host= 'host')
}

但是,我不知道如何让这段代码按我想要的方式工作。

get_mssql_conn <- function(){
  require(RJDBC)
  driver <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver", "./drivers/mssql-jdbc-7.0.0.jre8.jar")
  dbConnect(driver, "[connection string]",'[user]')
}

我假设一定有一种方法可以在包中创建驱动程序对象并在函数中使用它来代替读取文件,但我完全不知道我是怎么做到的。非常感谢任何帮助或指向正确方向。

您可以创建一个目录 inst/drivers 并将 .jar 文件保存在那里,然后创建您的函数,如下所示:

get_mssql_conn <- function(){
  driver <- RJDBC::JDBC(
    "com.microsoft.sqlserver.jdbc.SQLServerDriver", 
    system.file("drivers", "mssql-jdbc-7.0.0.jre8.jar", package = "MyConnections")
  )
  RJDBC::dbConnect(driver, "[connection string]",'[user]')
}

旁注:你应该从不在R包中使用requirelibrary——总是使用::并列出包在 DESCRIPTION 文件中的导入中。