原文地址:html
http://blog.52sox.com/use-r-c...
实际上学习R语言,主要是为了研究时间序列,相比Python的pandas,R中的包要强悍不少。
而使用R链接Oracle数据库的需求,实际是1个同事打算使用R语言对数据库直接进行操做,而不须要每次都导出数据再进行操做。而实际上咱们公司是使用Python进行数据分析的。
而在R中,要实现与Oracle数据库的操做,主要有3个包可使用:web
而最开始他选择的是RODBC,主要是由于在Windows下进行操做。结果卡在了以下的异常中:sql
1: In odbcDriverConnect("DSN=group;UID=fwy;PWD=fwy") : [RODBC] ERROR: state IM014, code 0, message [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称而且未指定默认驱动程序 2: In odbcDriverConnect("DSN=group;UID=fwy;PWD=fwy") : ODBC connection failed
能够很明显的看到,是没有安装对应的ODBC驱动。因而从oracle的官方页面下载了以下2个文件:数据库
这里我在Windows7上使用的版本是11.2.0.3
。将上述2个文件解压后合并在1个文件夹后,经过管理员身份运行文件夹下的odbc_install.exe
文件便可安装。
以后经过控制面板->管理工具->数据源(ODBC)中的相关设置便可成功链接。结果在他的Windows10系统中上述操做没法设置成功。
其配置页面相似以下:windows
ODBC设置成功后就能够经过以下的方式操做Oracle数据库了:oracle
library("RODBC") db <- odbcConnect(dsn="mesprd", uid="mesprd", pwd="wip24ux") data <- sqlQuery(db, "SELECT SYSDATE from DUAL")
须要注意的是,在这里第1个参数dsn是咱们设置ODBC时对应的名称,若是使用IP地址的方式是没法链接成功的,这是须要注意的。工具
既然RODBC行不通,那么咱们就来实践下RJDBC吧,结果把我搞晕了,实在太复杂了,超出了我头脑的容纳范围。没办法,只能再换种方式了,因而只能试下ROracle了。
我进行了以下的操做:性能
install.packages('ROracle')
若是直接安装会出现相似以下的页面:学习
结果安装的过程当中提醒我没有找到OCI的库。那么须要安装以下3个包:ui
在这里,我使用的版本仍是上面的11.2.0.3
。安装完成后,还须要设置OCI_LIB64
环境变量,以即可以找到对应的文件。
须要注意的是,ROracle的安装在Linux上相对更为简单,在Windows上咱们须要手动进行源码的安装。很不幸运的是,其版本1.3.1
在Windows7系统上式没法编译经过的,最后选择了版本1.2
则很顺利的经过了。其下载地址能够点击。
下载完成后,咱们在R的环境下运行:
setwd('下载包的目录') install.packages('ROracle_1.2-1.zip',repos=NULL) #install.packages('ROracle',type='source')
固然你也能够手动执行以下的操做:
R CMD INSTALL ROracle-1.2-1.zip
这样就完成了包的安装,最后经过相似以下的方式进行操做
library(ROracle) drv <- dbDriver("Oracle") con <- dbConnect(drv, "mesprd", "wip24ux")
最后关于这3个库的性能问题,能够参考。其执行速度关系为ROracle>RODBC>RJDBC。
参考文章:
https://docs.oracle.com/en/da...
https://cran.r-project.org/we...
https://stackoverflow.com/que...
https://stackoverflow.com/que...
https://stackoverflow.com/que...