我正在尝试从 Mac/Linux 上的 R 连接到 Microsoft SQL Server,但我遇到了 RJDBC 问题。当我下载了 Microsoft 的驱动程序和 JTDS 时,以下行均不起作用:
library(RJDBC)
drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver",
"/Users/victor/Downloads/sqljdbc_3.0/enu/sqljdbc4.jar")
drv1 <- JDBC('net.sourceforge.jtds.jdbc.Driver',
"/Users/victor/Downloads/jtds-1/jtds-1.3.0.jar")
每个都返回以下错误消息:
Error in .jfindClass(as.character(driverClass)[1]) : class not found
我怀疑问题可能与错误的 Java 版本有关:我的默认 java 是
$ java -version
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
但我的机器上也安装了 Java 1.6。我安装了 SquirrelSQL,它使用 JTDS 驱动程序连接到 MS SQL Server 没有任何问题;SquirrelSQL 运行的 Java 版本是 1.7.0.11。
我运行R CMD javareconf
了以下结果:
$ R CMD javareconf
Java interpreter : /usr/bin/java
Java version : 1.7.0_11
Java home path : /Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home/jre
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
Java library path:
JNI linker flags : -framework JavaVM
JNI cpp flags : -I$(JAVA_HOME)/include
Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.
并再次删除/安装了 RJDBC 和 rJava 包,但仍然没有任何效果。
我想我现在被困住了,因为我对 Java/RJDBC 及其交互不是很熟悉。搜索google发现有几个人有类似的问题但没有解决方案。
任何关于如何使 JDBC 行为的提示,或任何其他从 R 连接到 MS SQL Server 的方式,将不胜感激!
更新 1。好吧,第一条语句现在似乎可以工作了——我正在建立一个连接,并且可以毫无问题地查询数据库。不确定是什么解决了问题 - 可能我需要重新启动我的 mac/R 会话。第二条语句仍然不起作用,并显示相同的错误消息。