R:访问数据库管理系统


    R中有多种面向关系型数据库管理系统(DBMS)的接口,包括Microsoft SQL Server、Microsoft、Access、MySQL、Oracle、PostgreSQL、DB2、Sybase、Teradata以及SQLite。其中一些包通过原生的数据库驱动来提供访问功能,另一些则是通过ODBC或JDBC来实现访问的。使用R来访问存储在外部数据库中的数据是一种分析大数据集的有效手段,并且能够发挥SQL和R各自的优势。

 

►ODBC接口

    在R中通过RODBC包访问一个数据库也许是最流行的方式,这种方式允许R连接到任意一种拥有ODBC驱动的数据库,其实几乎就是市面上的所有数据库。第一步是针对你的系统和数据库类型安装和配置合适的ODBC驱动——它们并不是R的一部分。针对选择的数据库安装并配置好驱动后,安装RODBC包。

RODBC包中主要的函数及说明

                             函数

                描述

odbcConnect( dsn, uid="", pwd="" )

 建立一个到ODBC数据库的连接

sqlFetch( channel, sqltable )

 读取ODBC数据库中的某个表到一个数据框中

sqlQuery( channel, query )

 向ODBC数据库提交一个查询并返回结果

sqlSave( channel, mydf, tablename = sqtable, append=FALSE )

 将数据框写入或更新(append=TRUE)到ODBC数据库的某个表中

sqlDrop( channel, sqtable )

 删除ODBC数据库中的某个表

close( channel )

 关闭连接

 

    RODBC包允许R和一个通过ODBC连接的SQL数据库之间进行双向通信。这就意味着你不仅可以读取数据库中的数据到R中,同时也可以使用R修改数据库中的内容。

    假设你想将某个数据库中的两个表(Crime和Punishment)分别导入为R中的两个名为crimedat和pundat的数据框,可以通过如下代码完成这个任务:

library( RODBC )

myconn <- odbcConnect( "mydsn", uid="Rob", pwd="aardvark" )

crimedat <- sqlFetch( myconn, Crime )

pundat <- sqlQuery( myconn, "select * from Punishment" )

close( myconn )

    这里首先载入了RODBC包,并通过一个已注册的数据源名称(mydsn)和用户名(rob)以及密码(aardvark)打开了一个ODBC数据库连接。连接字符串被传递给sqlFetch,它将Crime表复制到R数据框crimedat中。然后我们对Punishment表执行了SQL语句select并将结果保存到数据框pundat中。最后,我们关闭了连接。

    函数sqlQuery()非常强大,因为其中可以插入任意的有效SQL语句。这种灵活性赋予了你选择指定变量、对数据取子集、创建新变量,以及重编码和重命名现有变量的能力。

 

►DBI相关包

    DBI包为访问数据库提供了一个通用且一致的客户端接口。构建于这个框架之上的RJDBC包提供了通过JDBC驱动访问数据库的方案。使用时请确保安装了针对你的系统和数据库的必要JDBC驱动。其他有用的、基于DBI的包有RMySQL、ROracle、RPostgreSQL和RSQLite。这些包都为对应的数据库提供了原生的数据库驱动,但可能不是在所有系统上都可用。详情请参阅CRAN(http://cran.r-project.org)上的相应文档。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值