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

原创 2015年11月21日 16:16:30

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







相关文章推荐

R语言连接Mysql数据库的步骤及简单使用(学习笔记)

实验环境:win8.1-64操作系统,MySQL5.61、下载(mysql-connector-odbc-5.3.4-winx64.msi) 下载地址:http://dev.mysql.c...

R语言使用RMySQL连接及读写Mysql数据库

简单说下安装过程,一般不会有问题,重点是RMySQL的使用方式。 系统环境说明 Redhat系统:Linux 460-42.6.32-431.29.2.el6.x86_64 系统编码:LANG=zh_...

R语言问题——连接数据库乱码问题解决方案

From http://blog.sina.com.cn/s/blog_83bb57b70102vejc.html 存在问题:MySQL查询数据正常,但是用R连接mysql查询后,数...
  • textboy
  • textboy
  • 2015年10月20日 17:25
  • 642

R语言连接数据库

R语言连接数据库 地址: R语言连接数据库(MySQL) 数据是关系数据库系统中存储的统一化格式。 因此,实施我们需要非常先进和复杂的SQL查询统计计算。但是R能够轻松地连接...

R语言的读取文件的相关学习(读取数据库,网页,EXCEL文件)

读取excel文件用到了xlsx 包,用read.xlsx2来读取 > install.packages('xlsx') collClassess参数决定了数据框中每列的类型,这并非是强制的,但这...

R语言︱ 数据库SQL-R连接与SQL语句执行(RODBC、sqldf包)

版权声明:本文为博主原创文章,转载请注明原作者Matt与博客链接,谢谢合作~~~ 目录(?)[-] 一数据库读入RODBC包二sqldf包 SQL基本特点数据筛选与排...

大型数据库分析-R语言

先看一下R能干什么df

R语言-股票数据库(2)-股票日K线信息-未复权

注:1、此方法获得的股票价格是实际价格,未进行前/后复权        2、只举例深市的获取方法,沪市的同理        3、步骤:先从网上爬取每个股票的交易历史,存为csv格式文件;读取csv文件...
  • wlt9037
  • wlt9037
  • 2017年07月11日 11:08
  • 262

R语言︱文件读入、读出一些方法罗列(批量xlsx文件、数据库、文本txt、文件夹)

笔者寄语:批量读取目前看到有以下几种方法:xlsx包、RODBC包、批量转化成csv后读入。 xlsx包 首先尝试用R包解决。即xlsx包。 xlsx包在加载时容易遇到问题。基本都是由于java环...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:R语言学习之<连接数据库>
举报原因:
原因补充:

(最多只允许输入30个字)