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