我正在使用 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)”
。我不知道这个问题是怎么来的,我需要处理写入PostgreSQL需要5分钟以上的大数据,所以我想知道如何解决这个自动断开连接的问题。
最佳答案
我在使用 src_sqlite()
时遇到过类似的问题。我得到的错误是 Auto-disconnecting SQLiteConnection
。显然,现在不鼓励使用 src_* 函数(来自 tbl()
的文档)。
However, modern best practice is to use tbl() directly on an DBIConnection.
在我使用下面的代码之前。代码本身没有返回任何错误。但是,再次使用同一个数据库后,我会收到错误消息 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)
请注意,断开连接语句略有变化,SQLite() 参数实际上是 dbConnect() 参数。
关于r - dplyr 自动断开 postgres 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43620927/