服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - R语言 - R语言实现操作MySQL数据库

R语言实现操作MySQL数据库

2021-12-24 13:53FTDdata R语言

这篇文章主要介绍了R语言实现操作MySQL数据库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

用R语言做数据分析时,常常需要从多种数据源取数据,其中数据库是非常常见的数据源。用R操作MySQL数据库,可以说是数据分析师必备的技能了,本文介绍RMySQL包,可以在R语言中对数据库进行增删改查的操作。

软件版本

  • win10 64bit
  • r3.6.1
  • rstudio 1.2
  • RMySQL 0.10.20

安装包

?
1
install.packages('RMySQL')

创建连接

用dbConnect函数创建连接,驱动类型设置为MySQL(),用户名user、密码password、主机host、端口port、数据库dbname这些参数需要根据实际情况修改,其中端口port默认值是3306。

?
1
2
3
4
5
6
7
8
9
# 加载包
library(RMySQL)
# 创建连接
con <- dbConnect(MySQL(),
         user="root",
         password="xxx",
         host="192.168.1.244",
         port=3306,
         dbname="test")

还可以通过一些命令,查看连接的相关信息。

?
1
2
# 连接概述
summary(con)
?
1
2
3
4
5
6
7
## <MySQLConnection:0,5>
##  User:  root
##  Host:  192.168.1.244
##  Dbname: test
##  Connection type: 192.168.1.244 via TCP/IP
##
## Results:
?
1
2
# 连接详情
dbGetInfo(con)
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## $host
## [1] "192.168.1.244"
##
## $user
## [1] "root"
##
## $dbname
## [1] "test"
##
## $conType
## [1] "192.168.1.244 via TCP/IP"
##
## $serverVersion
## [1] "5.7.23"
##
## $protocolVersion
## [1] 10
##
## $threadId
## [1] 465075
##
## $rsId
## list()
?
1
2
# 列出连接下所有表
dbListTables(con)
?
1
2
## [1] "city"     "result"   
## [3] "t_json"    "tb_newChiller"

创建表

dbCreateTable函数创建表

?
1
2
3
4
# 方法1:字符向量
dbCreateTable(con,'table1',fields =c("id"='int',"value"="float"))
# 方法2:数据框
dbCreateTable(con,'table2',fields = mtcars)

注意点:

  • 设置fields参数时,用命名的字符向量(名字为字段名,值为字段数据类型)或数据框表示
  • 表只能创建一次,重复创建会报错。

sql语句创建表

运行dbSendQuery函数,调用sql语句创建表,该函数返回一个RMySQLResult类。该方法可以重复运行,不会报错。

?
1
2
# 方法3:sql语句
dbSendQuery(con,'create table if not exists table3(id int,value float)')
?
1
## <MySQLResult:11,5,3>

读取表

dbReadTable函数读取表

?
1
2
3
4
# 先设置编码(windows)
dbSendQuery(con,'set names gbk')
 
## <MySQLResult:11,5,4>
?
1
2
3
4
5
6
7
8
9
10
# 读取完整表
dbReadTable(con,'city')
 
##  id name city_code
## 1 1 北京  000001
## 2 4 南京  000002
## 3 7 广州  000003
## 4 10 上海  000004
## 5 11 深圳  000005
## 6 13 苏州  000006

注意点:

  • 返回的是整个表的数据
  • 为解决中文显示问题,若运行R的操作系统为window,需要设置编码为gbk,为Linux则需要设置为utf8
  • 返回的数据格式为data.frame

sql语句读取表

通过运行dbGetQuery或dbSendQuery函数,调用sql语句读取表。
dbGetQuery函数运行sql语句,返回data.frame。可以在sql语句中编写筛选语句。

?
1
2
3
4
5
6
7
8
9
10
# 读取完整表
dbGetQuery(con,'select * from city')
 
##  id name city_code
## 1 1 北京  000001
## 2 4 南京  000002
## 3 7 广州  000003
## 4 10 上海  000004
## 5 11 深圳  000005
## 6 13 苏州  000006
?
1
2
3
4
5
6
# 读取筛选的表
dbGetQuery(con,'select id,name from city where id > 10')
 
##  id name
## 1 11 深圳
## 2 13 苏州

dbSendQuery函数运行sql语句,返回MySQLResult类。对该类使用dbFetch函数,可以筛选行,返回data.frame。用完后需要用dbClearResult函数清理结果。

?
1
2
3
4
5
6
7
8
# 筛选前3行数据
res <- dbSendQuery(con,'select * from city')
dbFetch(res,3)
 
##  id name city_code
## 1 1 北京  000001
## 2 4 南京  000002
## 3 7 广州  000003
?
1
2
3
dbClearResult(res)
 
## [1] TRUE

写入表

dbWriteTable函数写入表

?
1
2
# 写入表
dbWriteTable(con,"iris",iris,row.names=FALSE,append=TRUE)
?
1
## [1] TRUE

注意点:

  • 第一次写入时,若数据库中无该表,会根据表名自动创建
  • 重复写入时,需要设置写入行为:

 

参数设置 解释
append=TRUE 追加写入,新数据在原数据行末添加
overwrite=TRUE 覆盖写入,新数据覆盖原数据
row.names=FALSE 不写入数据框的行名

 

  • append和overwrite两个参数不能同时设置为TRUE。

sql语句插入数据

运行dbSendStatment函数,调用sql语句插入数据。

?
1
2
dbSendStatement(con,'insert into table1 values(1,12)')
## <MySQLResult:1701147206,5,12>

注意点:

  • 重复运行会重复插入数据

删除表

用dbRemoveTable函数删除表。

?
1
2
3
4
5
6
7
8
9
10
11
12
# 删除表
dbRemoveTable(con,'table1')
## [1] TRUE
 
dbRemoveTable(con,'table2')
## [1] TRUE
 
dbRemoveTable(con,'table3')
## [1] TRUE
 
dbRemoveTable(con,'iris')
## [1] TRUE

完成所有的操作后,需要关闭连接。

?
1
2
3
4
5
# 关闭连接
dbDisconnect(con)
 
 
## [1] TRUE

到此这篇关于R语言实现操作MySQL数据库的文章就介绍到这了,更多相关R语言操作MySQL内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家! 

原文链接:https://blog.csdn.net/jhr112/article/details/105848384

延伸 · 阅读

精彩推荐
  • R语言R语言编程学习绘制动态图实现示例

    R语言编程学习绘制动态图实现示例

    这篇文章主要介绍了R语言编程学习绘制动态图实现示例,有需要的的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    微小冷7652022-01-18
  • R语言R语言创建矩阵的实现方法

    R语言创建矩阵的实现方法

    这篇文章主要介绍了R语言创建矩阵的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随...

    hjk_caesar9462021-12-27
  • R语言R语言可视化存储矢量图实现方式

    R语言可视化存储矢量图实现方式

    这篇文章主要为大家介绍了R语言存储矢量图的实现方式过程,有需要的朋友可以借鉴参考下,希望能够有所你帮助,祝大家多多进步,早日升职加薪...

    Kanny广小隶9392022-01-20
  • R语言聊聊R语言中Legend 函数的参数用法

    聊聊R语言中Legend 函数的参数用法

    这篇文章主要介绍了聊聊R语言中Legend 函数的参数用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Gavin姓陈6352021-12-28
  • R语言R语言绘制散点图实例分析

    R语言绘制散点图实例分析

    在本篇文章里小编给大家整理的是一篇关于R语言绘制散点图实例分析内容,有需要的朋友们可以学习下。...

    w3cschool6942022-01-06
  • R语言R语言中c()函数与paste()函数的区别说明

    R语言中c()函数与paste()函数的区别说明

    这篇文章主要介绍了R语言中c()函数与paste()函数的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    yiyu_j11152022-01-12
  • R语言R语言-使用ifelse进行数据分组

    R语言-使用ifelse进行数据分组

    这篇文章主要介绍了R语言-使用ifelse进行数据分组,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    小力丸12042022-01-10
  • R语言R studio 批量注释的快捷方式

    R studio 批量注释的快捷方式

    这篇文章主要介绍了R studio 批量注释的快捷方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    JasonKQLin13342022-01-04