r - dplyr 自动断开 postgres 连接问题

标签 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)”。我不知道这个问题是怎么来的,我需要处理写入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/

相关文章:

r - lapply 的错误处理——输出失败元素的索引

c# - Npgsql Entityframework - 看不到 ADO.net 实体数据模型的 Postgres 提供程序

ruby-on-rails - 如何避免 Rails 中的简单竞争条件?

r 将多列数据合并为一列

r - 将 stargazer 与 Zelig 一起使用

r - 在R中获取伴随矩阵

r - 如何从调用对象中获取函数对象

sql - 为什么我能够从子查询中引用外部查询列?

r - 使用 dplyr 将函数应用于 data.frame 中的一行

r - 在 R 中使用 ifelse 和 grepl 进行变异并创建具有匹配字符串的新列