关闭

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

453人阅读 评论(0) 收藏 举报

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数据源未设置导致。







1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:73390次
    • 积分:1529
    • 等级:
    • 排名:千里之外
    • 原创:68篇
    • 转载:93篇
    • 译文:0篇
    • 评论:7条
    最新评论