R語言 操作MySQL資料庫

2021-10-05 15:00:18 字數 4675 閱讀 2696

用r語言做資料分析時,常常需要從多種資料來源取資料,其中資料庫是非常常見的資料來源。用r操作mysql資料庫,可以說是資料分析師必備的技能了,本文介紹rmysql包,可以在r語言中對資料庫進行增刪改查的操作。

install.packages('rmysql')
dbconnect函式建立連線,驅動型別設定為mysql(),使用者名稱user、密碼password、主機host、埠port、資料庫dbname這些引數需要根據實際情況修改,其中埠port預設值是3306。

# 載入包

library(rmysql)

# 建立連線

con

user="root",

password="***",

host="192.168.1.244",

port=3306,

dbname="test")

還可以通過一些命令,檢視連線的相關資訊。

# 連線概述

summary(con)

## ##   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"

# 方法1:字元向量

dbcreatetable(con,'table1',fields =c("id"='int',"value"="float"))

# 方法2:資料框

dbcreatetable(con,'table2',fields = mtcars)

注意點:

設定fields引數時,用命名的字元向量(名字為欄位名,值為字段資料型別)或資料框表示

表只能建立一次,重複建立會報錯。

執行dbsendquery函式,呼叫sql語句建立表,該函式返回乙個rmysqlresult類。該方法可以重複執行,不會報錯。

# 方法3:sql語句

dbsendquery(con,'create table if not exists table3(id int,value float)')

##
# 先設定編碼(windows)

dbsendquery(con,'set names gbk')

##
# 讀取完整表

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

通過執行dbgetquerydbsendquery函式,呼叫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

dbfetch(res,3)

##   id name city_code

## 1 1 北京 000001

## 2 4 南京 000002

## 3 7 廣州 000003

dbclearresult(res)
## [1] true
# 寫入表
## [1] true
注意點:

第一次寫入時,若資料庫中無該表,會根據表名自動建立

重複寫入時,需要設定寫入行為:

引數設定

解釋追加寫入,新資料在原資料行末新增

overwrite=true

覆蓋寫入,新資料覆蓋原資料

row.names=false

不寫入資料框的行名

執行dbsendstatment函式,呼叫sql語句插入資料。

dbsendstatement(con,'insert into table1 values(1,12)')
##
注意點:

重複執行會重複插入資料

dbremovetable函式刪除表。

# 刪除表

dbremovetable(con,'table1')

## [1] true
dbremovetable(con,'table2')
## [1] true
dbremovetable(con,'table3')
## [1] true
dbremovetable(con,'iris')
## [1] true
完成所有的操作後,需要關閉連線。

# 關閉連線

R語言 深圳 面授 R語言 操作MySQL資料庫

用r語言做資料分析時,常常需要從多種資料來源取資料,其中資料庫是非常常見的資料來源。用r操作mysql資料庫,可以說是資料分析師必備的技能了,本文介紹rmysql包,可以在r語言中對資料庫進行增刪改查的操作。install.packages rmysql 用dbconnect函式建立連線,驅動型別設...

R語言 連線MySQL資料庫方法

目錄 r語言連線資料庫常用的方法有2種 連線mysql,使用rmysql包,使用前rmysql包要先安裝。library rmysql 連線方式有2種 1 使用dbconnect conn dbconnect mysql dbname rmysql username rmysql password ...

資料探勘R語言鏈結資料庫MYSQL

r語言連線資料庫常用的方法有2種 1 使用r資料庫介面 連線mysql,使用rmysql包,使用前rmysql包要先安裝。library rmysql 連線方式有2種 1 使用dbconnect conn dbconnect mysql dbname rmysql username rmysql p...