R语言学习之<连接数据库>

R语言连接数据库可以利用数据库的存贮能力和R的计算能力,起到取长补短的效果。接下来探讨如何用R连接Oracle数据库。


一、Oracle Database Instant Client

   Oracle Database Instant Client 是用来连接远程服务器的,这样自己的电脑就不需要安装oracle数据库,因为oracle数据库太大,要求配置比较高。Oracle Database Instant Client 目前是分32位和64位的,下载安装需要清除自己的电脑是32位还是64位,下载对应的版本。


1) 从oracle官方网站下载instant client文件,一般来说,有basic、odbc,就足够用的了(其中basic是必须的,其他的自己根据需求下载):

     instantclient-basic-windows.x64-12.1.0.2.0.zip

     instantclient-odbc-windows.x64-12.1.0.2.0.zip

     instantclient-sdk-windows.x64-12.1.0.2.0.zip

2) 将以上压缩包解压到同一个文件夹中,如D:\Oracle\instantclient_12_1,设置环境变量

    1. ORACLE_HOME = D:\Oracle\instantclient_12_1

    2. TNS_ADMIN = D:\Oracle\instantclient_12_1

    3. NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK (可以不用设置)

    4. 修改Path变量,添加 %ORACLE_HOME%

3) 在D:\Oracle\instantclient_12_1中新建一个tnsnames.ora文件,环境变量TNS_ADMIN就是指向tnsnames.ora所在目录的。

ORACLE=
 (DESCRIPTION =
  (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.0.46)(PORT = 1521))
 )
 (CONNECT_DATA =
  (SERVICE_NAME = orcl)
 )
)

其中红线加粗的三个地方需要根据自己的实际情况进行更改

ORACLE —— 远程数据库的连接字符串

10.6.0.46 —— 远程数据库所在机器IP

orcl ——远程数据库名称

4)双击安装目录下的odbc_install.exe

5)打开控制面板,进入管理工具

   

    由于下载的是64位的,双击ODBC数据源(64位),点击添加

   

    选择Oracle in instantclient_12_1,点击完成,接着会需要填写一些项:

       ①Data Source Name 一项填入你要使用的名字,自己随便命名,例如:DSN;

       ②Description一项随意填写(可以不填),例如mydata

       ③TNS Service Name :远程数据库的连接字符串,会自动在tnsnames.ora中找到(设置了环境变量才找得到),点击右侧的向下的箭头就可以找到之前在tnsnames.ora设置的远程数据库的连接字符串ORACLE

       ④ User ID : Oracle用户名

   


至此,Oracle Database Instant Client 安装并配置完成。


二、R中连接Oracle数据库

1)安装RODBC,install.package("RODBC")

2 ) 加载RODBC包,library(RODBC)

3 ) 连接数据库,channel <- odbcConnect("DSN", uid="abc", pwd="abc")

注: 连接数据库可能出现以下问题

Warning messages:
1: In odbcDriverConnect("DSN=DSN;UID=jincz;PWD=jinchongzi", readOnlyOptimize = TRUE) :
  [RODBC] ERROR: state IM014, code 0, message [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
2: In odbcDriverConnect("DSN=DSN;UID=jincz;PWD=jinchongzi", readOnlyOptimize = TRUE) :
  ODBC connection failed


可能原因:

①由于R的位数和Oracle Database Instant Client的位数(或者说是ODBC数据源位数)不同导致的,Oracle Database Instant Client的位数为64位,则R也要设置为64位。

设置方式:点击Tools -> Global options  -> 修改R version

②由于ODBC数据源未设置导致。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值