1

私は答えを高低で検索したので、すでに回答されている場合は申し訳ありません!

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")

解決済み:

  1. Rstudio + パッケージを更新しました。

  2. このマニュアルに従ってください: https://www.linkedin.com/pulse/connect-oracle-database-r-rjdbc-tianwei-zhang/

  3. 「con」の後に次のコードを挿入します。

    sql_translate_env.JDBCConnection <- dbplyr:::sql_translate_env.Oracle sql_select.JDBCConnection <- dbplyr:::sql_select.Oracle sql_subquery.JDBCConnection <- dbplyr:::sql_subquery.Oracle

4

0 に答える 0