r - 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 包中使用require
或library
在 R 包中使用 - 始终::
在文件的 Imports 中使用并列出包DESCRIPTION
。
推荐阅读
- neo4j - Neo4j:你如何使用 datetime 属性范围来声明查询最后 15 分钟?
- angular - Unable to upgrade global angular CLI from 7 to 8
- python-3.x - 我正在尝试在 windows10 上使用 pip 安装 fbprophet 并显示以下错误
- python - python烧瓶mongodb插入数据
- python - 截图命令 Discord.py 重写
- apache-spark - Spark 的 reduceByKey 是使用恒定数量的内存,还是使用键数量的线性内存?
- javascript - 雪花中的 UDF JavaScript 实现
- python - 使小部件消失在框架中
- javascript - 需要触发验证
- javascript - 将对象推送到数组中,该数组是数组 Mongoose 中对象的字段