当我在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包中使用require
或library
- 总是使用::
并在DESCRIPTION
文件中的Imports中列出包。