R中有多个DB连接

时间:2017-03-23 15:07:08

标签: mysql r

我想知道是否有人可以帮助解决这个恼人的问题。 我试图创建/建立到不同数据库的多个连接。 我有一个带有3个名为 conf 的连接凭据的data.frame - 如果我像这样手动输入连接变量,它可以工作:

conn <- dbConnect(MySQL(), user=conf$user, password=conf$passws, host=conf$host, dbname=conf$db)

最终创建单个连接。 但是,我想要的是能够将连接称为:

conf$conn <- dbConnect(MySQL(), user=conf$user, password=conf$passws, host=conf$host, dbname=conf$db)

这是我收到的错误消息。 rep(value,length.out = nrows)出错:   尝试复制类型为&#39; S4&#39;

的对象

我认为问题在于我如何添加 conf $ conn

1 个答案:

答案 0 :(得分:1)

我使用poolconfig包的组合来解决类似的问题,以设置多个同时PostgreSQL连接。请注意,此解决方案需要config.yml文件,其中包含db1db2的连接属性。

library(pool)
library(RPostgreSQL)

connect <- function(cfg) {
  config <- config::get(config = cfg)
  dbPool(
    drv = dbDriver("PostgreSQL", max.con = 100),
    dbname = config$dbname,
    host = config$host,
    port = config$port,
    user = config$user,
    password = config$password
  )
}
conn <- lapply(c("db1", "db2"), connect)