dplyr自动断开postgres连接问题

时间:2017-04-25 21:04:29

标签: r postgresql dplyr

我使用dplyr包连接到PostgreSQL,我的代码如下:

# Connect to local PostgreSQL via dplyr
library('dplyr')
localdb <- src_postgres(dbname = 'postgres',
                                                 host = 'localhost',
                                                 port = 5432,
                                                 user = 'postgres',
                                                 password = '236236')

#Write table from R to PostgreSQL
iris<-as.data.frame(iris)
dbWriteTable(localdb$con,'iris',iris, row.names=FALSE)

连接成功,但大约5分钟后,弹出一条消息,说"Auto-disconnecting postgres connection (4308, 1)"。我不确定这个问题是如何产生的,我需要处理大量数据,需要花费5分钟以上才能写入PostgreSQL,所以我想知道如何解决这个自动断开连接的问题。

1 个答案:

答案 0 :(得分:0)

我与src_sqlite()有类似的问题。我得到的错误是Auto-disconnecting SQLiteConnection。显然,现在不鼓励使用src_ *函数(来自tbl()的文档)。

  

但是,现代最佳实践是直接在DBIConnection上使用tbl()。

在我使用下面的代码之前。代码本身并没有返回任何错误。但是,再次使用相同的数据库后,我会收到错误Auto-disconnecting SQLiteConnection

path <- 'C:/sql.db'
sql_data <- src_sqlite(path)
# work on the sql_data variable
tbl(sql_data)
DBI::dbDisconnect(thesql$con)

如前所述,不鼓励使用src_sqlite。使用下面的首选代码解决了我的问题。

sql_data <- DBI::dbConnect(RSQLite::SQLite(), dbname = path)
# work on the sql_data variable
tbl(sql_data)
DBI::dbDisconnect(thesql)

注意disconnect语句稍有改动,并且SQLite()参数实际上是dbConnect()参数。