在没有管理员的情况下将 R 连接到 Oracle DB
Connecting R to Oracle DB without admin
我需要一个 R 脚本,它允许我连接到 Oracle 数据库,而无需安装任何需要管理员权限的东西,最好除了包下载之外什么都不用安装。在 python 中,以下代码有效,我相信是因为它使用 cx_Oracle 模块作为可移植驱动程序。什么是好的 R 替代品?
import pandas as pd
import sqlalchemy
import sys
host = "xxx.intra"
database = "mydb"
user = "usr"
password = "pw"
def get_oracle_engine(host, database, user, password):
return sqlalchemy.create_engine("oracle+cx_oracle://{user}:{password}@{host}:1521/?service_name={database}".format(host=host, database=database, user=user, password=password))
engine=get_oracle_engine(host, database, user, password)
pd.read_sql_table("mytable", engine, schema= mydb,index.cols="id1")
我设法使用 the CRAN instructions 安装了 ROracle,但我在使用
时一直收到 ORA-12154 TNS: cound not resolve the connect identifier specified
library(ROracle)
con= DBI::dbconnect(dbDriver("Oracle"), user= user, password=password, host=host, dbname=database, port="1521")
顺便说一句dbDriver("Oracle")
returns
Driver name : Oracle (OCI)
Driver version: 1.3-1
Client version: 12.1.0.2.0
尝试这样的代码:
library(DBI)
library(ROracle)
drv <- Oracle()
con <- dbConnect(drv, 'cj', 'welcome', 'localhost:1521/orclpdb1')
dbGetQuery(con,"select count(*) from dual")
连接字符串组件与您在 SQLAlchemy 中使用的 {host}:1521/?service_name
值相关。使用 TNS 别名或 Easy Connect String,与其他基于 C 的 Oracle 驱动程序相同,例如https://cx-oracle.readthedocs.io/en/latest/user_guide/connection_handling.html#connection-strings
当前的 ROracle 代码位于 https://www.oracle.com/database/technologies/roracle-downloads.html 上传到 CRAN 时存在一些打包问题,CRAN 维护人员没有对解决这些问题做出回应。
ROracle 仍然需要 Oracle 客户端库,例如来自 Oracle Instant Client 的库。
我需要一个 R 脚本,它允许我连接到 Oracle 数据库,而无需安装任何需要管理员权限的东西,最好除了包下载之外什么都不用安装。在 python 中,以下代码有效,我相信是因为它使用 cx_Oracle 模块作为可移植驱动程序。什么是好的 R 替代品?
import pandas as pd
import sqlalchemy
import sys
host = "xxx.intra"
database = "mydb"
user = "usr"
password = "pw"
def get_oracle_engine(host, database, user, password):
return sqlalchemy.create_engine("oracle+cx_oracle://{user}:{password}@{host}:1521/?service_name={database}".format(host=host, database=database, user=user, password=password))
engine=get_oracle_engine(host, database, user, password)
pd.read_sql_table("mytable", engine, schema= mydb,index.cols="id1")
我设法使用 the CRAN instructions 安装了 ROracle,但我在使用
时一直收到ORA-12154 TNS: cound not resolve the connect identifier specified
library(ROracle)
con= DBI::dbconnect(dbDriver("Oracle"), user= user, password=password, host=host, dbname=database, port="1521")
顺便说一句dbDriver("Oracle")
returns
Driver name : Oracle (OCI)
Driver version: 1.3-1
Client version: 12.1.0.2.0
尝试这样的代码:
library(DBI) library(ROracle) drv <- Oracle() con <- dbConnect(drv, 'cj', 'welcome', 'localhost:1521/orclpdb1') dbGetQuery(con,"select count(*) from dual")
连接字符串组件与您在 SQLAlchemy 中使用的
{host}:1521/?service_name
值相关。使用 TNS 别名或 Easy Connect String,与其他基于 C 的 Oracle 驱动程序相同,例如https://cx-oracle.readthedocs.io/en/latest/user_guide/connection_handling.html#connection-strings当前的 ROracle 代码位于 https://www.oracle.com/database/technologies/roracle-downloads.html 上传到 CRAN 时存在一些打包问题,CRAN 维护人员没有对解决这些问题做出回应。
ROracle 仍然需要 Oracle 客户端库,例如来自 Oracle Instant Client 的库。