iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >R语言实现操作MySQL数据库
  • 118
分享到

R语言实现操作MySQL数据库

2024-04-02 19:04:59 118人浏览 八月长安
摘要

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

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

软件版本

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

安装包


install.packages('RMySQL')

创建连接

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


# 加载包
library(RMySQL)
# 创建连接
con <- dbConnect(MySQL(),
         user="root",
         password="xxx",
         host="192.168.1.244",
         port=3306,
         dbname="test")

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


# 连接概述
summary(con)

## <MySQLConnection:0,5>
##  User:  root 
##  Host:  192.168.1.244 
##  Dbname: test 
##  Connection type: 192.168.1.244 via tcp/IP 
## 
## Results:

# 连接详情
dbGetInfo(con)

## $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()

# 列出连接下所有表
dbListTables(con)

## [1] "city"     "result"    
## [3] "t_JSON"    "tb_newChiller"

创建表

dbCreateTable函数创建表


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

注意点:

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

sql语句创建表

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


# 方法3:sql语句
dbSendQuery(con,'create table if not exists table3(id int,value float)')

## <MySQLResult:11,5,3>

读取表

dbReadTable函数读取表


# 先设置编码(windows)
dbSendQuery(con,'set names gbk') 
 
## <MySQLResult:11,5,4>

# 读取完整表
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语句中编写筛选语句。


# 读取完整表
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

# 读取筛选的表
dbGetQuery(con,'select id,name from city where id > 10')
 
##  id name
## 1 11 深圳
## 2 13 苏州

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


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

dbClearResult(res)
 
## [1] TRUE

写入表

dbWriteTable函数写入表


# 写入表
dbWriteTable(con,"iris",iris,row.names=FALSE,append=TRUE)

## [1] TRUE

注意点:

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

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

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

sql语句插入数据

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


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

注意点:

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

删除表

用dbRemoveTable函数删除表。


# 删除表
dbRemoveTable(con,'table1')
## [1] TRUE

dbRemoveTable(con,'table2')
## [1] TRUE

dbRemoveTable(con,'table3')
## [1] TRUE

dbRemoveTable(con,'iris')
## [1] TRUE

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


# 关闭连接
dbDisconnect(con)


## [1] TRUE

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

您可能感兴趣的文档:

--结束END--

本文标题: R语言实现操作MySQL数据库

本文链接: https://www.lsjlt.com/news/121416.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么查询当前用户所有的表
    要查询当前用户拥有的所有表,可以使用以下 sql 命令:select * from user_tables; 如何查询当前用户拥有的所有表 要查询当前用户拥有的所有表,可以使...
    99+
    2024-05-15
    oracle
  • oracle怎么备份表中数据
    oracle 表数据备份的方法包括:导出数据 (exp):将表数据导出到外部文件。导入数据 (imp):将导出文件中的数据导入表中。用户管理的备份 (umr):允许用户控制备份和恢复过程...
    99+
    2024-05-15
    oracle
  • oracle怎么做到数据实时备份
    oracle 实时备份通过持续保持数据库和事务日志的副本来实现数据保护,提供快速恢复。实现机制主要包括归档重做日志和 asm 卷管理系统。它最小化数据丢失、加快恢复时间、消除手动备份任务...
    99+
    2024-05-15
    oracle 数据丢失
  • oracle怎么查询所有的表空间
    要查询 oracle 中的所有表空间,可以使用 sql 语句 "select tablespace_name from dba_tablespaces",其中 dba_tabl...
    99+
    2024-05-15
    oracle
  • oracle怎么创建新用户并赋予权限设置
    答案:要创建 oracle 新用户,请执行以下步骤:以具有 create user 权限的用户身份登录;在 sql*plus 窗口中输入 create user identified ...
    99+
    2024-05-15
    oracle
  • oracle怎么建立新用户
    在 oracle 数据库中创建用户的方法:使用 sql*plus 连接数据库;使用 create user 语法创建新用户;根据用户需要授予权限;注销并重新登录以使更改生效。 如何在 ...
    99+
    2024-05-15
    oracle
  • oracle怎么创建新用户并赋予权限密码
    本教程详细介绍了如何使用 oracle 创建一个新用户并授予其权限:创建新用户并设置密码。授予对特定表的读写权限。授予创建序列的权限。根据需要授予其他权限。 如何使用 Oracle 创...
    99+
    2024-05-15
    oracle
  • oracle怎么查询时间段内的数据记录表
    在 oracle 数据库中查询指定时间段内的数据记录表,可以使用 between 操作符,用于比较日期或时间的范围。语法:select * from table_name wh...
    99+
    2024-05-15
    oracle
  • oracle怎么查看表的分区
    问题:如何查看 oracle 表的分区?步骤:查询数据字典视图 all_tab_partitions,指定表名。结果显示分区名称、上边界值和下边界值。 如何查看 Oracle 表的分区...
    99+
    2024-05-15
    oracle
  • oracle怎么导入dump文件
    要导入 dump 文件,请先停止 oracle 服务,然后使用 impdp 命令。步骤包括:停止 oracle 数据库服务。导航到 oracle 数据泵工具目录。使用 impdp 命令导...
    99+
    2024-05-15
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作