13

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 とその相互作用にあまり詳しくないので、今は行き詰まっていると思います。グーグルで検索すると、同様の問題を抱えている人が何人か見つかりましたが、解決策はありませんでした。

JDBC を動作させる方法や、R から MS SQL Server に接続するその他の方法についてのヒントをいただければ幸いです。

更新 1。さて、最初のステートメントは機能しているようです。接続が確立され、問題なくデータベースにクエリを実行できます。何が問題を解決したのかわからない - Mac/R セッションを再起動する必要があるかもしれません。2 番目のステートメントはまだ機能せず、同じエラー メッセージが表示されます。

4

6 に答える 6

5

私はこれについてしばらく苦労してきました。これが私が見つけたものです。

  1. ここからダウンロード-- SQL サーバー用 Microsoft JDBC ドライバー
  2. ファイルを解凍しますsqljdbc4.jar
  3. 使用する:

    drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver", "<wherever sqljdbc4.jar is>")
    

これはうまくいくはずです。

私が正しければPATH、関数内の変数についてdrvは、JDBC ドライバーが配置されている PATH を指定する必要があるという考えです (何もない場合は、最初にダウンロードします)。そうしないと、一般的なclass not findエラーが発生します。

于 2013-03-19T15:01:06.897 に答える
2

Linux の jtds-1.3.1 でこの問題が発生しました。jtds-1.2.7に切り替えてみたら問題がなくなりました。jtds-1.3.* には、RJDBC との互換性をなくす何かがあるようです。

于 2013-08-09T19:42:15.590 に答える
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") 
于 2013-01-31T19:18:07.493 に答える
0

以前、RJDBC を使用して Cassandra に接続しようとしたときに同じエラーが発生しました。Cassandra JDBC の依存関係を JAVA ClassPath に配置することで解決しました。

この回答を参照してください:

于 2015-02-02T07:23:10.953 に答える