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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM