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

2021-10-14 03:51:35 字數 4206 閱讀 3120

​❝用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

注意點:

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

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

執行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語言檔案操作

path j lab ex29 在r語言中進行檔案 夾 操作 setwd path cat file a n file a 建立乙個檔案a,檔案內容是 file a n 表示換行,這是乙個很 好的習慣 cat file b n file b 建立乙個檔案b 有空行file.create a 建立乙個...

R語言 集合操作

在實際工作中,我們經常需要進行一些集合運算,在r中怎麼實現呢?當然用不著寫for或者while迴圈那麼複雜了,r已經為我們提供了非常強大的集合運算系列函式,下面就簡單的介紹一下這些函式 假設a,b,c為三個集合 首先對集合a,b,c賦值 a 1 10 b seq 5,15,2 c 1 5 求a和b的...

R語言 資料操作

1 顯示工作區間所有物件ls 或objects 2 清空空間中的物件 rm 3 給物件賦值 1 輸出資料型別 class is.資料型別.判斷是否為此資料型別 可以用method is 檢視is的所有方法 2 四種資料屬性 3 資料缺失 即資料為空用na表示 一張圖看懂r語言變數的基本型別 一維 向...