以下内容出自http://www.douban.com/note/172387172/

CRAN上有很多R的数据库支持包,使R能够对数据库进行读写操作。这些包有:RODBC、DBI、RMySQL、ROracle,、RPostgreSQL、RSQLite、 RJDBC 、RpgSQL等等,支持几乎市面上所有的数据库系统。实现的技术也包括ODBC和JDBC两大方面。其中RJDBC和RpgSQL(基于JDBC)都需要Java的支持。

因为选择很多,所以R操作数据库的方式也很灵活,我本人的电脑系统是64位,情况稍微特殊一点,所以这篇文章会以64位的工作环境下的操作为主。事实上32位的环境更加成熟,选择更多。

首先,介绍工作环境:
         数据库:PostgreSQL v8.4以上(本例中数据库版本为9.0版)
         选择这个数据库的原因,一是因为个人的爱好,2是R文档中的例子几乎清一色的是MySQL,烂 大街了的数据库再多讲就没太大意义。加上这个数据库因为不像MySQL和Oracle那样使用广泛(其实这个数据库使用以及很普及了),所以可以作为一个一般性的例子来参考。
         操作系统:Windows 7 SP1 x64
         其实在Linux上讲这个更有代表性,因为R的原生系统是Linux,并且Linux平台的ODBC和JDBC的配置和Windows系统比相对要复杂一点,但是我的机器上没有Linux,所以只能等以后有机会再补上这一部分的内容。这一回就以Windows系统为主。
         使用的R软件包:RODBC
         本来想使用RpgSQL包的,无奈64位系统下,不管我如何调整,R怎么都不认我的64位的JDK,RPostgreSQL包又不支持新版本的R。无奈,只好用RODBC

下面介绍主要内容:
       第一步: 创建测试用的数据库和数据表
       数据库名就直接用Postgre的默认数据库“postgre”,数据表起名soybean1(工作后遗症,工作用的数据不方便透露,就自己随便填了两个数据上去了),如下图:

第二步:配置ODBC数据源
       Windows下的ODBC配置比较简单。打开“控制面板”,进入“管理工具”菜单,选择“数据源(ODBC)”会出现如下窗口:

其中“PostgreSQL35W”就是PostgreSQL数据库ODBC驱动的名称,倘若没有此项,请先安装PostgreSQL的ODBC驱动(下载地址:http://www.postgresql.org/ftp/odbc/versions/msi/)。安装完成后点击上图界面中的“添加”按钮,选择PostgreSQL的驱动即可。然后再点选上图界面中的“配置”按钮,弹出以下界面:
 

其中,Database填写对应的数据库名称,本例中为“postgres”。Server填写数据库系统的url地址,如果是在本机运行的数据库系统,一般可填“localhost”,本例中即是如此。Port处填写数据库系统的访问端口,不同的数据库一般不同,PostgreSQL的默认端口是“5432”。User Name和Password处分别填写访问数据库用的用户名和密码。所有这些填完后数据源的配置就基本完成了。

第三步:R中建立数据库连接
       本例中使用RStudio作为R的IDE环境,主要是为了操作方便。首先载入RODBC包,然后使用odbcDataSources()函数查看可用的数据源。发现PostgreSQL的数据源名称为“PostgreSQL35W”,记住这个名称。然后建立数据库的连接,使用的命令行如下:
conn=odbcConnect("PostgreSQL35W",uid="postgres",pwd="m4a1",case="tolower")
其中,第一个参数就是刚才odbcDataSources()函数列出的PostgreSQL数据源的名称,uid为用户名
pwd为密码,case参数表示大小写转换,因为Windows默认将字符转换为小写。至此如果不出任何错误的话,就代表连接建立成功,之后就可以进行对数据库的查询或者将处理好的数据框以数据表的形式存入数据库操作。本例中仅给出查询的样例,其他操作请参考RODBC的帮助文档。

 

通常来说,数据库连接的创建是个难点,经常会出现的错误有:参数不正确,比如用户名密码不正确或者数据源名称错误。ODBC驱动失效也可能引起连接建立错误,这种情况一般在配置ODBC数据源的时候就会出现错误,出现这种情况,一般可以通过重新安装ODBC驱动来解决问题。

另外,在32位环境下,RpgSQL借助JDBC也可以实现对数据库的灵活访问,不过我在自己的笔记本上(本子用的32位系统)测试这个包,发现其对Unicode的支持似乎不是太好,数据表的中文表头在读取后会变成乱码,目前暂时没有找到解决方案。

更多内容,请参考http://cran.r-project.org/doc/manuals/R-data.pdf

R语言操作数据库的更多相关文章

  1. R语言RODBC数据库操作

    最近准备做一个股票的数据库,用R语言来获取数据,然后存在SQL Sever 2016 express 里面,虽然前面接触过一些操作,但是还是很不熟悉,现在数据已经能获取到了,是时候好好学习一下怎么用R ...

  2. 39.C语言操作数据库

    一.准备工作: sqlite3工具集:链接:https://pan.baidu.com/s/1mjufXZa 密码:2ui7 安装步骤: 打开如下文件夹,找到sqlite3.dll,并放入系统目录 2 ...

  3. Go语言操作数据库及其常规操作

    Go操作MySQL 安装: go get -u github.com/go-sql-driver/mysql GO语言的操作数据库的驱动原生支持连接池, 并且是并发安全的 标准库没有具体的实现 只是列 ...

  4. R语言读入数据库的中英名词互译测试并计分脚本(考试用)

    1. 分子生物学中英文.csv,输入文件,两列,以tab键分隔的txt文本,没有列名 2. 错误的名解.csv, 如果在测试中拼写错误,会写出到这个文件,可用这个容易犯错的名词进行新的测试 3. 注意 ...

  5. 分享一个以前写的基于C#语言操作数据库的小框架

    一:前言 这个是以前写的操作MySQL数据库的小型框架,如果是中小型项目用起来也是很不错的,里面提供Filter.ModelPart.Relationship等机制实现操作数据库时的SQL语句的拼接和 ...

  6. 如何在Linux下用C/C++语言操作数据库sqlite3(很不错!设计编译链接等很多问题!)

    from : http://blog.chinaunix.NET/uid-21556133-id-118208.html 安装Sqlite3: 从www.sqlite.org上下载Sqlite3.2. ...

  7. R语言操作mysql上亿数据量(ff包ffbase包和ETLUtils包)

    平时都是几百万的数据量,这段时间公司中了个大标,有上亿的数据量. 现在情况是数据已经在数据库里面了,需要用R分析,但是完全加载不进来内存. 面对现在这种情况,R提供了ff, ffbase , ETLU ...

  8. 使用R语言-操作data.frame

    1 向一个data.frame指定列插入一列新数据 1.1 插入一列到指定位置 y<-1:4 data1 <-data.frame(x1=c(1,3,5,7), x2=c(2,4,6,8) ...

  9. C语言ODBC数据库操作

    今天我们来介绍一下C语言操作数据库的方法,这里我们使用的是ODBC方式.环境是WIN7+VC6.其他环境也差不多,具体情况具体分析. 首先是环境的配置以及数据源的添加.这里就不去解释了,相关资料网上有 ...

随机推荐

  1. JavaScript系列:《JavaScript高级程序设计》,chapter2, 在html中使用JavaScript

    2.1.2 延迟脚本     指的是defer属性,且只适用于外部脚本,也就是有defer属性的脚本.     由于各种延迟浏览器对延迟脚本的支持不统一,且在html5之后也不再支持defer属性,所 ...

  2. CentOS 6.5 安装Nginx 1.7.4

    一.安装准备 首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++.gcc.openssl-devel.pcre-devel和zlib ...

  3. VC++中复制对话框资源 之较好方法之一

    资源对话框的编写有时候较为麻烦,这里我成功实现了这个方法的可用性,具体如下: 碰到模块移植问题了,自己做的对话框类(继承于CDialog)要移植到目标工程中.在网上搜了几个帖子发现都说的很生涩.   ...

  4. 关于json 与 Request Header 的Content-Type 一些关系。

    由于最近遇到关于,ashx文件ajax解析参数的问题.查询网上很多资料后,已经解决. 鉴于网上已经足够多的,关于这个问题的文章.大部分内容来自互联网,我这里只是做一些整理和记录.特此说明并非原创. C ...

  5. 回归到最初的编程——Linux下的C编程

    最近感觉有些浮躁,一方面感觉最近写公司的PHP代码倍感无聊,没有什么成就感!另一方面面对我的mac电脑中安装了诸多开发语言,倍感浮躁与困惑!同时想到这么多年来,却一直在使用PHP进行程序开发,总觉得有 ...

  6. [USACO 3.1.4]rect1(漂浮法/矩形切割)

    描述 N个不同的颜色的不透明的长方形(1 <= N <= 1000)被放置在一张横宽为A竖长为B的白纸上. 这些长方形被放置时,保证了它们的边与白纸的边缘平行. 所有的长方形都放置在白纸内 ...

  7. Coding the Matrix (3):矩阵

    1. 矩阵与映射 矩阵和映射包含两方面的关系: 简单:已知矩阵 M, 从向量 x 映射到 M * x. (注:矩阵与行向量的点乘) 稍微复杂:已知映射 x ->M * x, 求矩阵 M. 第一种 ...

  8. javascript基础(1)

    1.前言 ECMAscript解释,用来解释JS代码 DOM 文档对象模型,浏览器在做显示时需要渲染DOM树 BOM  浏览器对象模型,可以控制浏览器的行为,代码的兼容性很差 2.基本类型 数字类型: ...

  9. WebService学习笔记一

    01——Schema约束复习 1.1 schema约束 几个重要知识: 1.namespace 相当于schema文件的id 2.targetNamespace属性 用来指定schema文件的name ...

  10. 处理Json数据中的日期类型.如/Date(1415169703000)/格式

    在asp.net mvc后台返回到视图中的json数据中想对数据进行操作,发现日期类型无法直接进行操作,需要转换为指定格式才行.在网上也搜了下方法也很多,觉得有点麻烦,最终使用正则搞定了,分享下: v ...