【问题标题】:How to Connect R to Oracle DB using RJDBC如何使用 RJDBC 将 R 连接到 Oracle DB
【发布时间】:2018-12-06 10:16:52
【问题描述】:

我正在尝试将 R 连接到我的 Oracle 数据库,但每当我调用以下函数时都会收到以下错误:

Error in .jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1],  : 
  java.sql.SQLException: NL Exception was generated

我有 2 个文件,一个 functions.r 文件和我的 working.r 文件。以下是我在每个文件中的内容。

函数.r

caesi <- function(DB){
  ## Create an Oracle connection to a
  ## remote database using the SID in the connect string.
  drv <- JDBC(driverClass="oracle.jdbc.OracleDriver", classPath="E:/filelocation/ojdbc6.jar")

  ## user details 
  username = "USERNAME" ## Your user name
  password = "PASSWORD" ## Your password

  ## Refer to Oracle Database Net Services Administator's Guide for
  ## details on connect string specification.

  ## Current connection string this will change when we replatform
  host <- "LOCALHOST"
  port <- 1521
  svc <- "rtreports"
  connect.string <- paste("(DESCRIPTION=", " (ADDRESS= (PROTOCOL=TCP)(HOST= ",host,")(PORT=",port,"))","(CONNECT_DATA= (SERVICE_NAME=",svc,")))",sep = "")

  ## Use username/password authentication.
  ErrReturn <- 0  
  return({

    con <-dbConnect(drv,paste0("jdbc:oracle:thin:@localhost:1521:orcll",connect.string),username, password)

  })

} 

Get_Data = function(){
ch_or <- caesi("DB")

data <- dbGetQuery(ch_or, paste0(("SELECT * FROM MYTABLE")))

dbDisconnect(ch_or) 

outcoords <- data
  return(outcoords)
}

还有我的 working.r 文件

#
library(tidyverse)
library(RJDBC)
library(rJava)
library(ggplot2)
library(dplyr)

source("functions.R")

df <- Get_Data()

每当我运行 Get_Data 时,我都会收到错误消息。我不确定我哪里出错了,如果有人能提出建议,我将不胜感激,因为我是 R 新手,如果有人能提供帮助,我会非常喜欢。


Nirmala,在做出您要求的更改后,我在我的代码中注释了以下部分:

## Current connection string this will change when we replatform
  ##host <- "LOCALHOST"
  ##port <- 1521
  ##svc <- "rtreports"
  ##connect.string <- paste("(DESCRIPTION=", " (ADDRESS= (PROTOCOL=TCP)(HOST= ",host,")(PORT=",port,"))","(CONNECT_DATA= (SERVICE_NAME=",svc,")))",sep = "")

然后把连接线改成:

con <-dbConnect(drv,paste0("jdbc:oracle:thin:@localhost:1521:orcll"),username, password)

但这现在给了我以下错误:

Error in .jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1],  : 
  java.sql.SQLException: ORA-01017: invalid username/password; logon denied

即使用户名/密码正确且工作正常,因为我能够连接到 sql developer 中的数据库。

【问题讨论】:

    标签: r database oracle rjdbc


    【解决方案1】:

    这可能是您传递连接 URL 的方式的问题。您正在混合长格式和易连接 URL。您可以使用此处显示的 URL 并尝试一下吗?

    jdbc:oracle:thin:@myhost:1521/myorcldbservicename

    【讨论】:

    • 感谢 Nirmala 的回复,对于迟到的回复深表歉意,将修改并回复您。
    • Nirmala,在您回复后,我对原来的问题进行了更改。
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2016-03-11
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多