私は答えを高低で検索したので、すでに回答されている場合は申し訳ありません!
RI を使用して、Oracle 11.1 データベースの遅延評価を実行しようとしています。接続を容易にするために JDBC を使用しましたが、正常に動作することを確認できました。dbGetQuery を使用してテーブルをクエリすることもできますが、結果が非常に大きいため、すぐにメモリ不足になります。
次のエラーが表示されますが、dbplyr/dplyr tbl(con, "ORACLE_TABLE") を試しました。
Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", :
Unable to retrieve JDBC result set for SELECT *
FROM "ORACLE_TABLE" AS "zzz39"
WHERE (0 = 1) (ORA-00933: SQL command not properly ended)
db_table <- tbl(con, in_schema('ORACLE_TABLE')) も使用してみました
これは、通常の dbGetQuery を実行できるにもかかわらず、接続しているすべてのデータベースで発生しています。
完全なコード:
# Libraries
library(odbc)
library(DBI)
library(config)
library(RJDBC)
library(dplyr)
library(tidyr)
library(magrittr)
library(stringr)
library(xlsx)
library(RSQLite)
library(dbplyr)
オラクルコネクション
db <- config::get('db')
drv1 <- JDBC(driverClass=db$driverClass, classPath=db$classPath)
con_db <- dbConnect(drv1, db$connStr, db$orauser, db$orapw, trusted_connection = TRUE)
# Query (This one works but the data set is too large)
db_data <- dbSendQuery(con_db, "SELECT end_dte, reference, id_number FROM ORACLE_TABLE where end_dte > '01JAN2019'")
**# Query (this one wont work)**
oracle_table <- tbl(con_db, "ORACLE_TABLE")
解決済み:
Rstudio + パッケージを更新しました。
このマニュアルに従ってください: https://www.linkedin.com/pulse/connect-oracle-database-r-rjdbc-tianwei-zhang/
「con」の後に次のコードを挿入します。
sql_translate_env.JDBCConnection <- dbplyr:::sql_translate_env.Oracle sql_select.JDBCConnection <- dbplyr:::sql_select.Oracle sql_subquery.JDBCConnection <- dbplyr:::sql_subquery.Oracle