我正在尝试使用 for 循环RJDBC
从数据库自动下载数据。im 使用的数据库每 10 分钟自动关闭一次连接,所以我想做的是以某种方式捕获错误,重新建立连接并继续循环。为了做到这一点,我需要以某种方式捕获错误,问题是,它不是 r 错误,因此没有任何命令trycatch
和类似工作。我只是在控制台上收到一条短信告诉我:
Error in .jcheck() : No running JVM detected. Maybe .jinit() would help.
我如何处理以下情况:
if (output == ERROR) {remake connection and run dbQuery} else {run dbQuery}
感谢您的任何帮助
您可以使用pool
包来抽象连接管理的逻辑.
这完全符合您对使用DBI
.
它应该适用于RJDBC
这是 DBI 的体现,但我没有使用此驱动程序对其进行测试。
libray(pool)
library(RJDBC)
conn <- dbPool(
drv = RJDBC::JDBC(...),
dbname = "mydb",
host = "hostadress",
username = "test",
password = "test"
)
on.exit(poolClose(conn))
dbGetQuery(conn, "select... ")