R语言操作数据库
以下内容出自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)”会出现如下窗口:
其中,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语言操作数据库的更多相关文章
- R语言RODBC数据库操作
最近准备做一个股票的数据库,用R语言来获取数据,然后存在SQL Sever 2016 express 里面,虽然前面接触过一些操作,但是还是很不熟悉,现在数据已经能获取到了,是时候好好学习一下怎么用R ...
- 39.C语言操作数据库
一.准备工作: sqlite3工具集:链接:https://pan.baidu.com/s/1mjufXZa 密码:2ui7 安装步骤: 打开如下文件夹,找到sqlite3.dll,并放入系统目录 2 ...
- Go语言操作数据库及其常规操作
Go操作MySQL 安装: go get -u github.com/go-sql-driver/mysql GO语言的操作数据库的驱动原生支持连接池, 并且是并发安全的 标准库没有具体的实现 只是列 ...
- R语言读入数据库的中英名词互译测试并计分脚本(考试用)
1. 分子生物学中英文.csv,输入文件,两列,以tab键分隔的txt文本,没有列名 2. 错误的名解.csv, 如果在测试中拼写错误,会写出到这个文件,可用这个容易犯错的名词进行新的测试 3. 注意 ...
- 分享一个以前写的基于C#语言操作数据库的小框架
一:前言 这个是以前写的操作MySQL数据库的小型框架,如果是中小型项目用起来也是很不错的,里面提供Filter.ModelPart.Relationship等机制实现操作数据库时的SQL语句的拼接和 ...
- 如何在Linux下用C/C++语言操作数据库sqlite3(很不错!设计编译链接等很多问题!)
from : http://blog.chinaunix.NET/uid-21556133-id-118208.html 安装Sqlite3: 从www.sqlite.org上下载Sqlite3.2. ...
- R语言操作mysql上亿数据量(ff包ffbase包和ETLUtils包)
平时都是几百万的数据量,这段时间公司中了个大标,有上亿的数据量. 现在情况是数据已经在数据库里面了,需要用R分析,但是完全加载不进来内存. 面对现在这种情况,R提供了ff, ffbase , ETLU ...
- 使用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) ...
- C语言ODBC数据库操作
今天我们来介绍一下C语言操作数据库的方法,这里我们使用的是ODBC方式.环境是WIN7+VC6.其他环境也差不多,具体情况具体分析. 首先是环境的配置以及数据源的添加.这里就不去解释了,相关资料网上有 ...
随机推荐
- Unity导出的Xcode项目,iOS端管理摄像头的方法
Vuforia导出的工程中管理摄像头问题 在以前的篇幅中提到了unity端和iOS端的动态交互.现在出现了一个问题.因为设备上的摄像机是实例化过来的.并且是一个单例.unity虽然已经不再显示了.但是 ...
- 第七章 new的三步曲
这章是本系列文章的重点,这章揭示了js对象的真正本质 看下面的事例 var a = new b(); 等价于 ①var a={}; ②a.__proto__=b.prototype; ③b.call( ...
- 开源分布式实时计算引擎 Iveely Computing 之 本地调试Topology(4)
当我们写完一个比较复杂的Topology之后,倘若直接提交到服务器上运行,难免会有很多问题,如何进行本地的调试Topology,是我们非常关心的问题.我们依然以WordCount作为代码示例. 首先, ...
- Java并发编程-CAS
CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术.简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替 ...
- Android--下拉框
一. 实现效果图如下 Android 中的下拉框为Spinner 组件,其效果图如上图片 二. 实现代码 布局代码如下 <?xml version="1.0" encodin ...
- Object C学习笔记21-typedef用法
在上一章的学习过程中遇到了一个关键字typedef,这个关键字是C语言中的关键字,因为Object C是C的扩展同样也是支持typedef的. 一. 基本作用 typedef是C中的关键字,它的主要作 ...
- node的实践(项目三)
渲染前台的方式. <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" ...
- 编写高质量代码改善C#程序的157个建议[正确操作字符串、使用默认转型方法、却别对待强制转换与as和is]
前言 本文主要来学习记录前三个建议. 建议1.正确操作字符串 建议2.使用默认转型方法 建议3.区别对待强制转换与as和is 其中有很多需要理解的东西,有些地方可能理解的不太到位,还望指正. 建议1. ...
- Ibatis学习总结3--SQL Map XML 映射文件
在前面的例子中,只使用了 SQL Map 最简单的形式.SQL Map 的结构中还有其他更多 的选项.这里是一个 mapped statement 较复杂的例子,使用了更多的特性. <sqlMa ...
- Centos下apache启动时httpd: apr_sockaddr_info_get() failed for 报错
今天安装Apache httpd web服务器时,从官方网站上http://www.apache.org/dyn/closer.cgi下载httpd,然后在centos下解压,安装过程分为三部分: ( ...