R的数据库访问-MySQL

目录


1 RMySQL

R作为一款数据分析的工具,,而MySQL是一款常用的开源关系型数据库软件,非常适用于中小型的数据存储,当二者相互结合时才能爆发出巨大的能量。

RMySQL程序包就为R提供了访问MySQL数据库的接口程序,其不仅支持基本的数据库访问与查询,还封装了高效的数据操作方法,掌握好这些功能将使得数据的分析和处理更加得心应手。

2 环境与安装

## 2.1 运行环境 操作系统:[Win10](http://www.itellyou.cn/)

R版本:R-3.2.4-win

MySQL版本:MySQL Community 5.7

RStudio版本:RStudio-0.99.896

2.2 安装RMySQL

使用第三方软件包的安装方法,在RStudio中输入如下代码:

install.packages('RMySQL')

3 建立通信

## 3.1 建立本地连接

RMySQL中使用dbConnect函数指定与本地数据库建立连接时,需要指定数据库管理系统的类别,用户名(username),密码(password)以及需要操作的数据库名称(dbname)。

library(DBI)
library(RMySQL)
con <- dbConnect(MySQL(),username='analysis',password='1',dbname='ppd')

除了上节提到的参数以外,完整的数据库连接设置还应该指定服务器地址(host)与访问端口号(port),所以建立本地数据库连接完整的如下:

con <- dbConnect(MySQL(),host='10.2.2.15',username='db_mysql',password='db_mysql',port=3306,dbname='bc-oss')

3.2 建立远程连接

建立R与远程MySQL数据库通信时,只需要指定数据库相应的服务器地址和端口号。

con <- dbConnect(MySQL(),host='127.0.0.1',username='analysis',password='1',port=3306,dbname='ppd')

3.3 MySQL连接信息

summary(con)

3.4 关闭连接

dbDisconnect(con)

4 基本操作

4.1 数据读写

# dbWriteTable(连接名,新建的表名,data.frame数据)
dbWriteTable(con,'iris',iris[1:100,]) # 新建表并插入数据
dbReadTable(con,'iris') # 获得整个表数据
dbWriteTable(con,'iris',iris[101:150,],append = T) # 新增数据
dbWriteTable(con,'iris',iris[1:20,],overwrite = T) # 覆盖原表数据
dbWriteTable(con,'iris',iris[1:15,],row.names = F,overwrite = T) # 不插入row.names字段
dbListTables(con) # 查看数据库的表
dbListFields(con,'iris') # 查看某表的字段
dbSendQuery(con,'insert into iris values (5.8,4.0,1.2,0.2,"setosa")') # 插入记录
if(dbExistsTable(con,'iris')){
  dbRemoveTable(con,'iris') # 删除表
}

4.2 SQL操作

querryData <- dbGetQuery(con,'select * from iris where `Sepal.Length` > 0') # 查询数据
class(querryData)
summary(querryData)

分页

querrySql <- dbSendQuery(con,'select * from iris where `Sepal.Length` > 0') # 执行SQL脚本查询,并分页
querryData <- fetch(querrySql,n = 1) # 截取的记录数
querryData <- fetch(querrySql,n = -1) # 截取的记录数
summary(querryData)

如果数据库中存在中文字符

dbSendQuery(con,'SET NAMES gbk')
dbListFields(con,'city')

5 案例实践


联系作者:YukBrandes@Gmail.com

posted @ 2016-08-09 23:15  稻粮谋  阅读(2522)  评论(0编辑  收藏  举报