2
有谁知道如何做到这一点? showConnections不会列出来自odbcConnect的任何打开的连接。显示所有打开的RODBC连接
有谁知道如何做到这一点? showConnections不会列出来自odbcConnect的任何打开的连接。显示所有打开的RODBC连接
您可以通过以下方式缩小搜索范围,这将返回当前RODBC类环境中的所有变量。
envVariables<-ls()
bools<-sapply(envVariables, function(string){
class(get(string))=="RODBC"
})
rodbcObj<-envVariables[bools]
闭合连接仍然是RODBC类,所以这里还有一些工作要做。
我们可以使用trycatch定义一个函数,它将尝试获取关联的RODBC对象的连接信息。如果它是一个开放的连接,那么这个命令将正常运行,并且我们返回变量名称的字符串。
如果RODBC对象不是一个开放的连接,这会抛出一个错误,我们捕获并以我实现的方式返回NA。你可以在这里返回任何数量的东西。
openConns<-function(string){
tryCatch({
result<-odbcGetInfo(get(string))
string
}, error = function(e){
NA
})
}
然后,我们删除对应于该错误的返回值。在我的情况下,NA,所以我做na.omit在返回。
na.omit(sapply(rodbcObj, openConns))
或可替代
result<-sapply(rodbcObj, openConns)
result[!is.na(result)]
它的任何问题或意见,让我知道
5'-DMT
十分感谢:)我要看看这个! – nathaneastwood 2014-09-01 08:29:56
要检查RODBC“通道”的连接状态,您可以调用专用函数RODBC ::: odbcValidChannel(三个冒号!!!),由于RODBC在RODBC中广泛使用,不知道为什么这样一个重要功能已经在RODBC上公开)。包'RODBCext'具有类似的功能,但在包中也是私有的。 – 2016-12-27 21:38:57