R语言实现操作MySQL数据库

用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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 简述:我为什么选择Python而不是Matlab和R语言

    做数据分析.科学计算等离不开工具.语言的使用,目前最流行的数据语言,无非是MATLAB,R语言,Python这三种语言,但今天小编简单总结了python语言的一些特点及平常使用的工具等. 为什么Python比MATLAB.R语言好呢? 其实,这三种语言都很多数据分析师在用,但更推荐python,主要是有以下几点: 1.python易学.易读.易维护,处理速度也比R语言要快,无需把数据库切割: 2.python势头猛,众多大公司需要,市场前景广阔:而MATLAB语言比较局限,专注于工程和科学计算方

  • R语言3.6.3安装超详细教程附安装包

    软件下载 R语言3.6.3 软件安装包下载: 链接: https://pan.baidu.com/s/1sufVf2lmoj9GYG_j5_fJKQ 提取码: tnqg R语言R-4.0.4 安装包下载地址: 链接: https://pan.baidu.com/s/1uzH49cJ0lnob54k19WWjOQ 提取码: kusa 软件介绍 R语言是一款非常专业的统计建模软件,R语言拥有数据存储和处理系统;数组运算工具(其向量.矩阵运算方面功能尤其强大),完整连贯的统计分析工具;优秀的统计制图等

  • 详解R语言中的PCA分析与可视化

    1. 常用术语 (1)标准化(Scale) 如果不对数据进行scale处理,本身数值大的基因对主成分的贡献会大.如果关注的是变量的相对大小对样品分类的贡献,则应SCALE,以防数值高的变量导入的大方差引入的偏见.但是定标(scale)可能会有一些负面效果,因为定标后变量之间的权重就是变得相同.如果我们的变量中有噪音的话,我们就在无形中把噪音和信息的权重变得相同,但PCA本身无法区分信号和噪音.在这样的情形下,我们就不必做定标. (2)特征值 (eigen value) 特征值与特征向量均为矩阵分

  • R语言是什么 R语言简介

    R是由Ross Ihaka和Robert Gentleman在1993年开发的一种编程语言,R拥有广泛的统计和图形方法目录.它包括机器学习算法.线性回归.时间序列.统计推理等.大多数R库都是用R编写的,但是对于繁重的计算任务,最好使用C.c++和Fortran代码. R不仅在学术界很受欢迎,很多大公司也使用R编程语言,包括Uber.谷歌.Airbnb.Facebook等.用R进行数据分析需要一系列步骤:编程.转换.发现.建模和交流结果 R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统

  • R语言判断语句的使用详解

    判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的). 下面是大多数编程语言中典型的判断结构的一般形式: R 语言提供了以下类型的判断语句: if 语句 if...else 语句 switch 语句 if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成. 语法格式如下: if(boolean_expression) { // 布尔表达式为真将执行的语句 } 如果布尔表达式 boolean_expression

  • R语言入门之安装R和Rstuido软件

    安装R和Rstuido软件 R语言是用于统计分析,图形表示和报告的编程语言和软件环境:Rstudio是编辑.运行R语言的最为理想的工具之一. 1.官网下载R安装包 下载地址为:https://cran.r-project.org   进入链接,如下图所示,在页面顶部提供了三个下载链接,分别对应三种操作系统:Windows.Mac和Linux.请选择自己操作系统对应的链接,接下来我将以windows为例给大家展示安装过程. 接下来单击[Download R for Windows]-->[base

  • R语言绘图如何支持中文

    不同系统的字体库目录: Linux 一般在 /usr/share/fonts 下,我们可以使用 fc-list 命令查看: # fc-list /usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: DejaVu Serif:style=Bold /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf: DejaVu Sans Mono:style=Book /usr/share/fonts/t

  • R语言的下载安装图文教程讲解

    什么是R语言 R语言是一个开源的数据分析环境,起初是由数位统计学家建立起来,以更好的进行统计计算和绘图,这篇wiki中包含了一些基本情况的介绍.由于R可以通过安装扩展包(Packages)而得到增强,所以其功能已经远远不限于统计分析,如果感兴趣的话可以到官方网站了解关于其功能的更多信息. 至于R语言名称的由来则是根据两位主要作者的首字母(Robert Gentleman and Ross Ihaka),但过于简短的关键词也造成在搜索引擎中很不容易找到相关的资料.不过这个专门的搜索网站可以帮到你.

  • R语言实现操作MySQL数据库

    用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.端口

  • Python操作MySQL数据库9个实用实例

    在Windows平台上安装mysql模块用于Python开发 用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-python-1.2.3.win-amd64-py2.7.exe 实例 1.取得 MYSQL 的版本 # -*- coding: UTF-8 -*- #安装 MYSQL DB for python import MySQLdb as mdb con

  • Linux下实现C++操作Mysql数据库

    想用C++写项目,数据库是必须的,所以这两天学了一下C++操作MySQL数据库的方法.也没有什么教程,就是在网上搜的知识,下面汇总一下. 连接MySQL数据库有两种方法:第一种是使用ADO连接,不过这种只适合Windows平台:第二种是使用MySQL自己的C API函数连接数据库.我是在Linux平台下开发,所以就采用第二种方法,有很多Api函数,但是常用的就几个,我也是就用到其中的几个. API函数 1.mysql_real_connect() 连接一个mysql服务器 MYSQL *mysq

  • 在CMD中操作mysql数据库出现中文乱码解决方案

    百度了一下..有说将cmd字符编码用chcp命令改为65001(utf8字符编码),可这样之后根本无法输入中文,查询出的中问结果依旧乱码 . 其实,只要保证cmd客户端和MySQL两者编码一致即可. 但现实是cmd默认的是gbk(cmd属性可以看到中文操作系统下面是gbk编码),而mySQL一般是utf8(我的也是),之前一直进入误区,想要更改cmd的字符编码,可是并不能行得通.网友中提到在mysql中关于客户端编码问题,只需在cmd里告诉mysql服务器我客户端这边编码和想要的结果集编码即可.

  • 一款简单实用的php操作mysql数据库类

    本文实例讲述了一款简单实用的php操作mysql数据库类.分享给大家供大家参考.具体如下: 复制代码 代码如下: /* 本款数据库连接类,他会自动加载sql防注入功能,过滤一些敏感的sql查询关键词,同时还可以增加判断字段 show table status的性质与show table类 获取数据库所有表名等.*/ @ini_set('mysql.trace_mode','off'); class mysql {  public $dblink;  public $pconnect;  priv

  • Python操作mysql数据库实现增删查改功能的方法

    本文实例讲述了Python操作mysql数据库实现增删查改功能的方法.分享给大家供大家参考,具体如下: #coding=utf-8 import MySQLdb class Mysql_Oper: def __init__(self,host,user,passwd,db): self.host=host self.user=user self.passwd=passwd self.database=db def db_connecet(self): try: #连接 conn=MySQLdb.

  • Python操作MySQL数据库的方法

    pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1') # 创建游标 cursor = conn.cursor() # 执行SQL,并返回收影响行数 eff

  • Python操作MySQL数据库实例详解【安装、连接、增删改查等】

    本文实例讲述了Python操作MySQL数据库.分享给大家供大家参考,具体如下: 1.安装 通过Python连接MySQL数据库有很多库,这里使用官方推荐的MySQL Connector/Python库,其官网为:https://dev.mysql.com/doc/connector-python/en/. 通过pip命令安装: pip install mysql-connector-python 默认安装的是最新的版本,我安装的是8.0.17,对应MySQL的8.0版本.MySQL统一了其相关

  • flask 框架操作MySQL数据库简单示例

    本文实例讲述了flask 框架操作MySQL数据库.分享给大家供大家参考,具体如下: 一.创建数据库表格 """ Created on 19-10-8 @requirement:Anaconda 4.3.0 (64-bit) Python3.6 @description:创建表格 """ import pymysql server = '127.0.0.1' user = 'root' password = 'password' # 连接数据库

  • Golang操作MySql数据库的完整步骤记录

    前言 MySQL是业界常用的关系型数据库,在平时开发中会经常与MySql数据库打交道,所以在接下来将介绍怎么使用Go语言操作MySql数据库. 下载MySql连接驱动 Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动.使用database/sql包时必须注入(至少)一个数据库驱动. 我们常用的数据库基本上都有完整的第三方实现.比如:MySQL驱动 **下载依赖** go get -u github.com/go-sql-driver/my

随机推荐