没有 tnsnames.ora 的 RODBC 连接到 Oracle

标签 r oracle rodbc tnsnames

我试图在不使用 tnsnanes.ora 的情况下使用 RODBC 从 R 连接到 Oracle。

我试过跟随字符串,但没有一个起作用。

> con.text <- paste0("Driver={OracleODBC-11g};Dbq=//oracle.server:1527/database.pdw.prod;Uid=user;Pwd=pswd;")

> con.text <- paste0("Driver={OracleODBC-11g}; ",
         "CONNECTSTRING=(DESCRIPTION=(ADDRESS= (PROTOCOL = TCP)(HOST = oracle.server)(PORT = 1527))(CONNECT_DATA=(SERVICE_NAME = database.pdw.prod))); uid=user;pwd=pswd;")

> con.text <- paste0("Driver=", "OracleODBC-11g"
                     , ";Server=", "oracle.server"
                     , ";Database=", "database.pdw.prod"
                     , ";Uid=", "user"
                     , ";Pwd=", "pwd", ";")

> con.text <- paste0("Driver=", "OracleODBC-11g"
                      , ";Server=", "oracle.server"
                      , ";CONNECTSTRING=" , "(DESCRIPTION=(ADDRESS= (PROTOCOL = TCP)(HOST = oracle.server)(PORT = 1527))(CONNECT_DATA=(SERVICE_NAME = database.pdw.prod)))" 
                      , ";Database=", "database.pdw.prod"
                      , ";Uid=", "user"
                      , ";Pwd=", "pswd", ";")
> con1 <- odbcDriverConnect(connection = con.text)

但是对于所有这些字符串,我都会收到以下错误:

Warning messages:
1: In odbcDriverConnect(connection = con.text) :
 [RODBC] ERROR: state HY000, code 12162, message [unixODBC][Oracle][ODBC][Ora]ORA-12162: TNS:net service name is incorrectly specified
2: In odbcDriverConnect(connection = con.text) : ODBC connection failed

      1: In odbcDriverConnect(connection = con.text) :
  [RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specified

最佳答案

您正在寻找的正确语法是

Conex     <- odbcDriverConnect("DRIVER=Oracle en OraClient11g_home2;UID=USERNAME;PWD=PASSWORD;DBQ=//HOSTNAME:PORT/ORACLE_SID;",
             believeNRows = FALSE)

Conex     <- odbcDriverConnect("DRIVER=Oracle en OraClient11g_home2;UID=John;PWD=Deere;DBQ=//fcoracleserver.youdomain:1521/TestEnvironment;",
             believeNRows = FALSE)

困难的部分是找到驱动程序的名称,如您所见,我的名称是西类牙语。

我所做的是首先使用 C:\Windows\System32\odbcad32.exe 创建一个 ODBC 连接,在那里您可以检查您的 Oracle 或 SQL Server 驱动程序的正确名称。

创建连接后,您可以使用 odbcDataSources() 在 R 上,查看该连接并找出驱动程序。那真的是最难的部分。

希望对您有所帮助!

关于没有 tnsnames.ora 的 RODBC 连接到 Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37114170/

相关文章:

r - geom_line 不会在 barplot 内绘制

java - 合并使用 1 :* relationships into one query 的三个查询

database - 如何重新复制损坏的物理备用数据库?

mysql - R连接2个数据框

r - 将组副标题和小计行添加到 R 中的 data.frame 或表

r - R中同一图中的几个条形图

R ggplot2 facetting 保持比率但覆盖/定义输出绘图大小

sql - 在 H2 中将特殊字符串转换为日期

sql - RODBC查询返回零行

sql-server - 如何停止正在运行的查询?