我希望编写一个函数来执行以下操作:“如果数据库连接已经打开,关闭它并重新打开一个新的连接”
为了做到这一点,我需要一种检查连接是否已经打开的方法。
这是我的连接字符串:
library(odbc)
my_conn_string <- paste("Driver{Teradata};DBCName=teradata2690;DATABASE=PRODUCTION;UID=",
username,";PWD=",password, sep="")
t2690 <- dbConnect(odbc::odbc(), .connection_string=my_conn_string)
我考虑使用连接的 class
:
if (is.null(class(t2690)) {
t2690 <- dbConnect(odbc::odbc(), .connection_string=my_conn_string)
}
然而,这并不起作用,因为无论连接是否打开,类都是相同的:
# Class when connected
class(t2690)
[1] "Teradata"
attr(,"package")
[1] ".GlobalEnv"
# Class when not connected
dbDisconnect(t2690)
class(t2690)
[1] "Teradata"
attr(,"package")
[1] ".GlobalEnv"
odbc
包而不是RODBC
。 - Shinobi_Atobe