从Mac/Linux上的R连接到MS SQL Server

Vic*_* K. 12 r rjdbc

我正在尝试从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")
Run Code Online (Sandbox Code Playgroud)

每一个都返回以下错误消息:

Error in .jfindClass(as.character(driverClass)[1]) : class not found
Run Code Online (Sandbox Code Playgroud)

我怀疑问题可能是错误的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)
Run Code Online (Sandbox Code Playgroud)

但是我的机器上也安装了Jave 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.
Run Code Online (Sandbox Code Playgroud)

并删除/安装了RJDBC和rJava包,但仍然无效.

我想我现在卡住了,因为我对Java/RJDBC及其互动不太熟悉.搜索谷歌发现几个有类似问题的人没有解决方案.

任何有关如何使JDBC行为的提示,或任何其他方式从R连接到MS SQL Server,将非常感谢!

更新1.好吧,第一个语句似乎现在正常工作 - 我正在获得连接并且可以毫无问题地查询数据库.不知道是什么解决了问题 - 可能是我需要重新启动我的mac/R会话.第二个语句仍然不起作用,具有相同的错误消息.

Men*_*hao 5

我已经为此苦苦挣扎了一段时间。这是我发现的。

  1. 此处下载-用于SQL Server的Microsoft JDBC驱动程序
  2. 解压缩该文件,即可在其中找到sqljdbc4.jar
  3. 使用:

    drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver", "<wherever sqljdbc4.jar is>")
    
    Run Code Online (Sandbox Code Playgroud)

这应该工作。

如果我是对的,那么我的想法是,对于函数中的PATH变量drv,将需要指定JDBC驱动程序所在的PATH(因此,如果没有,则首先下载它)。否则,将收到一个常见class not find错误。


小智 0

 library(RJDBC) 
 cp <- c
 ( 
      "<usr path>/jdbc/mdb/log4j.jar", 
      "<usr path>/jdbc/mdb/commons_lang.jar", 
      "<usr path>/jdbc/mdb/commons_logging.jar" 
  ) 

 .jinit(classpath=cp) 

 drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver",
        "/Users/victor/Downloads/sqljdbc_3.0/enu/sqljdbc4.jar") 
Run Code Online (Sandbox Code Playgroud)