我需要一个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")
我设法使用CRAN指令安装了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")
返回
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字符串,与其他基于C的Oracle驱动程序相同,例如。https://cx-oracle.readthedocs.io/en/latest/user_guide/connection_handling.html#connection-字符串 -
当前ROCracle代码位于https://www.oracle.com/database/technologies/roracle-downloads.html上传到CRAN时出现了一些打包故障,CRAN维护人员没有对解决这些问题做出回应。
-
ROracle仍然需要Oracle客户端库,例如来自Oracle Instant Client的库。