我使用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,所以我想知道如何解决这个自动断开连接的问题。
答案 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()参数。