0

在我的工作场所,通过 Oracle UI,我只能使用TNS 作为 Connection Type,因为他们无法为我打开端口来进行连接。它是甲骨文 11g。

但是,现在我需要编写代码来连接到 Oracle 并获取数据。我尝试了几种编码语言,但它们都不起作用......

这是我尝试过的

尝试1:Spark Scala,Spark Python 类似,我这里用的是Spark Notebook

val jdbcUsername = "[my user name]"
val jdbcPassword = "[my pswd]"
val jdbcHostname = "[Oracle hostname]"
val jdbcPort = [default port number]
val jdbcDatabase ="DATABASE"
val jdbcUrl = s"jdbc:oracle://${jdbcHostname}:${jdbcPort}/${jdbcDatabase}?user=${jdbcUsername}&password=${jdbcPassword}"
val connectionProperties = new java.util.Properties()

Class.forName("com.oracle.jdbc.Driver")

import java.sql.DriverManager
val connection = DriverManager.getConnection(jdbcUrl, jdbcUsername, jdbcPassword)
connection.isClosed()

此方法失败并显示

找不到合适的驱动程序

尝试 2:Oracle 教程

然后我检查了Oracle 教程,它对我不起作用,因为它使用的是基本连接类型而不是 TNS 我还检查了相关的 Java 连接方法,对我不起作用

尝试 3:R

最后,我换成了R,这是教程:R connect to Oracle

第一种方法使用RODBC失败,显示

消息 [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

这是代码:

library(RODBC)
con <- odbcConnect("[Oracle Host name]", uid="[my user id]", pwd="[my pswd]", rows_at_time = 500)

对于第二种方法,我不能使用RJDBC任何一种。对于第三种方法,我尝试了我所在位置的所有镜像url,但仍然无法安装包ROracle.....

我的问题是,是否可以使用 TNS 作为连接类型来编写代码并连接到 Oracle 表?我擅长 Python、Java 和 R,还可以使用 Spark Scala

4

2 回答 2

0

使用 Class.forName("oracle.jdbc.driver.OracleDriver") 首先加载驱动程序。并且 oracle jdbc 驱动程序 jar 文件应该在你的 $CLASSPATH 中

于 2016-07-27T03:01:49.610 回答
0

终于发现 R 对我有用,而我的公司阻止了太多东西。R 非常快。这是解决方案:

步骤 1: 下载 .jar for ojdbc,需要为您的 Oracle 版本选择一个,对我来说是 11g。此 .jar 文件的路径将是classPath

步骤2:如果没有Java jdk,请安装它,否则无法加载rJava包。在此处下载 Java JDK

library(rJava)
library(RJDBC)
drv <- JDBC("oracle.jdbc.OracleDriver", classPath="[your .jar file path]\\ojdbc6.jar", " ")
con <- dbConnect(drv, "jdbc:oracle:thin:@[hostname]:[port number]:[database name]", "[user name]", "[user paswd]")
d <- dbGetQuery(con, "select * from [table name] WHERE ROWNUM <= 3")
d$[a column name]
dbDisconnect(con)
于 2016-07-29T02:53:18.807 回答