gpt4 book ai didi

r - 如何在 PostgreSQL 的 tryCatch 中使用 dbGetQuery?

转载 作者:行者123 更新时间:2023-11-29 11:24:41 25 4
gpt4 key购买 nike

我尝试使用 tryCatch 从 R 查询我的 PostgreSQL 数据库。基本上查询有效,但我无法捕获错误并对它们使用react。这是一个例子

insert_rows <- function(dframe,con){

out <- list()
for(i in 1:nrow(dframe)){
query <- .... some insert statement
tryCatch({dbGetQuery(con,query)},error=function(e) print("caught"))
}

}

当我创建错误时,例如通过将重复记录输入到唯一 PK,我确实看到了 PostgreSQL 错误和警告,但这是 RPostgreSQL 的标准打印输出。我在其他情况下使用过 tryCatch 并且它总是以这种方式工作。我用过很多 dbGetQuery 但我不能让它们一起工作。此外,将 tryCatch 放入 out 列表中确实有很大帮助。

最佳答案

使用dbSendQuery 发送插入语句。在这种情况下,tryCatch 将捕获异常:

tryCatch({
dbSendQuery(con, "insert into wrongtable values(1, 2, 3)")
},
error = function(e) print(e)
)

对于使用 dbGetQuery(我不知道为什么会失败)有一个解决方法 -调用 postgresqlExecStatementpostgresqlFetch 而不是 dbGetQuery:

tryCatch({
res <- postgresqlExecStatement(con, "select * from thereisnotablewiththisname")
postgresqlFetch(res)
},
error = function(e) print(e),
warning = function(w) print(w)
)

关于r - 如何在 PostgreSQL 的 tryCatch 中使用 dbGetQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34332769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com