RH2:连接到R中的H2数据库

时间:2015-03-29 11:39:34

标签: r h2 rjdbc

我尝试将RH2连接到H2(1.4.181)数据库。我尝试了不同的东西,比如重新安装R,并在Ubuntu上修复rJava的潜在问题。但是,跟随错误不会消失:

> library("RH2")
Loading required package: chron
Loading required package: RJDBC
Loading required package: DBI
Loading required package: rJava
> con <- dbConnect(H2(driverClass="org.h2.Driver", jars =    "~/h2-1.4.181.jar"), "jdbc:h2:~/test", "sa", "")
Error in is(object, Cl): error in evaluating the argument 'drv' in selecting a method for function   'dbConnect': Error in .jfindClass(as.character(driverClass)[1]) : class not found

有谁知道如何解决这个问题,还是我在语法上犯了错误?

2 个答案:

答案 0 :(得分:0)

您可以直接使用RJDBC代替RH2。这将是相应的命令:

con&lt; - dbConnect(JDBC('org.h2.Driver','〜/ h2-1.4.181.jar'),'jdbc:h2:〜/ test','sa','')< / p>

请注意,在Windows中,使用〜作为驱动程序路径会给我一个错误。但是如果我将jar位置字符串替换为绝对路径,例如'C:/h2-1-4.181.jar',它就可以工作。请注意,尽管我得到的错误与您的错误类似,但我不能说这会修复RH2,因为我无法将其用于其他原因。

有关RJDBC的更多信息,请参阅:https://www.rforge.net/RJDBC/index.html

答案 1 :(得分:0)

我认为jars论证被打破了。我的猜测是它没有预先挂起。

我修复了它(在Mac OS X上),将我的包库中的旧H2 jar替换为更新的。具体做法是:

 box:java nmvanhoudnos$ pwd
 /Users/nmvanhoudnos/Library/R/3.2/library/RH2/java
 box:java nmvanhoudnos$ ls
 h2-1.3.175.jar
 box:java nmvanhoudnos$ mv h2-1.3.175.jar h2-1.3.175.old
 box:java nmvanhoudnos$ cp ~/workspace/defectprediction/h2*.jar .
 box:java nmvanhoudnos$ ls
 h2-1.3.175.old h2-1.4.184.jar

您需要对操作系统,文件系统和更新H2 jar的位置进行适当的更改。

一旦你有了新的jar文件,就可以测试它在R中的工作原理如下:

> library(RH2)
> con <- dbConnect(H2())
> s <- "select VALUE from INFORMATION_SCHEMA.SETTINGS where NAME = 'info.VERSION'"
> dbGetQuery(con, s)
                 VALUE
1 1.4.184 (2014-12-19)

正如所料。