R 経由で PostgreSQL DB からデータをクエリしようとしています。いくつかの異なるパッケージ (RODBC, RJDBC, DBI, RPostgres
など) で猫の皮をむこうとしましたが、ドライバー エラーが発生し続けているようです。奇妙なことに、同じドライバー/URL と設定を使用して SQLWorkbench/J から Postgres に接続する際に問題が発生したことはありません。
postgresql-9.2-1002.jdbc4.jar
とpostgresql-9.3-1100.jdbc41.jar
、および R の汎用"PostgreSQL"
ドライバーを使用してみました。2 つの jar ファイルは、(i) SQLWorkbench/J で常に使用しているドライバーと、(ii) 同じドライバーの少し新しいバージョンです。 . でも、いざ使ってみると…
drv_custom <- JDBC(driverClass = "org.postgresql.Driver", classPath="/Users/xxxx/postgresql-9.3-1100.jdbc41.jar")
エラーが発生します:
Error in .jfindClass(as.character(driverClass)[1]) : class not found
では、次に汎用ドライバーで試してみます。
drv_generic <- dbDriver("PostgreSQL")
奇妙なことに、ユーザー名を入力する必要はありません。
>con <- dbConnect(drv=drv_generic, "jdbc:postgresql://xxx.xxxxx.com", port=xxxx, uid="xxxx", password="xxxx")
>Error in postgresqlNewConnection(drv, ...) : unused argument (uid = "xxxx")
だから私はユーザー/ uidなしで試してみます:
con <- dbConnect(drv_generic, "jdbc:postgresql://padb-01.jiwiredev.com:5439", password="paraccel")
エラーが発生します....
Error in postgresqlNewConnection(drv, ...) :
RS-DBI driver: (could not connect jdbc:postgresql://padb-01.xxx.com:5439@local on dbname "jdbc:postgresql://xxxx.xxxx.com:5439")
明らかに構文が間違っていますか?
次に、「カスタム」ドライバー (以前の .jar ファイルのいずれか) の試行に戻りますが、driverClass は指定されていません。
drv_custom1 <- JDBC( classPath="/Users/xxxx/postgresql-9.2-1002.jdbc4.jar")
con <- dbConnect(drv=drv_custom1, "jdbc:postgresql://xxx.xxx.com", port=5439, uid="paraccel", pwd="paraccel")
次のエラーが表示されます。
Error in .jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1], :
RcallMethod: attempt to call a method of a NULL object.
構文を少し変更して、もう一度試しました。
con <- dbConnect(drv=drv_custom1, url="jdbc:postgresql://xxxx.xxxx.com", port=xxxx, uid="xxxx", pwd="xxxxx",dsn="xxxx")
同じエラーが発生しました。他の多くのバリエーション/アプローチも試しました。私の混乱の一部は、ドキュメントが DBI のようなパッケージと RJDBC のようなその上に構築されたパッケージとの間で非常に断片的な方法で処理されているという事実から来ていると思い?dbConnect
ます。言及さえされておらず、これらのパッケージ/エラーに関連するさまざまな Google 検索結果に基づいて作業してきました。
私が見つけた1つのスレッドが試してみることを提案しました
.jaddClassPath( "xxxxx/postgresql-9.2-1002.jdbc4.jar" )
最初に、しかしそれは役に立たなかったようです。
私も使ってみました
x <- PostgreSQL(max.con = 16, fetch.default.rec = 500, force.reload = FALSE)
役に立たず、ドライバーとして RODBC を試してみました。
アップデート:
古いバージョンのドライバー (jdbc4 ではなく jdbc3) を使用して、R を再起動し、不要なパッケージをすべてデタッチしてみました。
ドライバーをロードできました
> drv_custom <- JDBC(driverClass = "org.postgresql.Driver", classPath="/xxxxx/xxxxx/postgresql-9.3-1100.jdbc3.jar")
しかし、まだ接続できません...
> con <- dbConnect(drv=drv_custom, "jdbc:postgresql://xxxxx.xxxxx.com", port=5439, uid="xxxxx", pwd="xxxxx")
Error in .verify.JDBC.result(jc, "Unable to connect JDBC to ", url) :
Unable to connect JDBC to jdbc:postgresql://xxxxx.xxxx.com