Как подключить R к базе данных Oracle с помощью RJDBC - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь подключить 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файл.Вот что у меня есть в каждом файле:

functions.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, и был бы очень рад, если бы кто-то мог помочь.


Нирмала, после внесения изменений, которые вызапрошенный, я прокомментировал следующий раздел в моем коде:

## 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.

1 Ответ

0 голосов
/ 07 декабря 2018

Возможно, проблема в том, как вы передаете URL-адрес соединения.Вы смешиваете как длинную форму, так и легко подключаемый URL.Можете ли вы просто использовать URL, как показано здесь, и попробовать его?

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

...