R-RMySQL包介紹學習


參考內容:

RMySQL數據庫編程指南
R語言使用RMySQL連接及讀寫Mysql數據庫

RMySql包安裝和加載優點問題,試着根據提示簡單安裝和加載可以使用,后續再查詢資料解決。

3.2.1 連接數據庫

dbConnect(MySQL(),host="localhost",dbname,user="",password="", ...)

library(RMySql)
#可能是安裝RMySQL的問題,導致直接library(RMySql)提示不存在RMySql包,通過下列方式可以加載成功(又挖一個坑...) library("RMySQL", lib.loc="/Library/Frameworks/R.framework/Versions/3.3/Resources/library") # Quark con <- dbConnect(MySQL(),host="localhost",dbname="Quark",user="root",password="root") #獲取連接信息,查看database下所有表 summary(con) dbGetInfo(con) dbListTables(con) #斷開連接 dbDisconnect(con)

3.2.2 寫入數據

dbWriteTable(conn, name, value, row.names=T...)

  • append=T 在數據庫中原表的基礎上追加

  • overwrite=T 覆蓋數據庫中的原表

testA <-data.frame(id=1:6,e=c("a","b","c","d","e","f"),c=c("我","的","世","界","變","得")) testB <-data.frame(id=7:13,e=c("g","h","i","j","k","l","m"),c=c("奇","妙","跟","難","以","言","喻")) #直接寫testA寫入test表中 dbWriteTable(con,"test",testA,row.names=T) dbReadTable(con,"test") #追加寫testB追加在test表后 dbWriteTable(con,"test",testB,append=T,row.names=F) dbReadTable(con,"test") #覆蓋寫testB覆蓋test表 dbWriteTable(con,"test",testB,overwrite=T,row.names=F) dbReadTable(con,"test") fruits <-data.frame(id=1:5,name=c("蘋果","香蕉","梨子","玉米","西瓜"),price=c(8.8,4.98,7.8,6,2.1),status=c("無","打折","無","售罄","批發")) dbListTables(con) dbWriteTable(con,"fruits",fruits,overwrite=T,row.names=F) dbReadTable(con,"fruits")

3.2.3 讀取數據

向數據庫提交查詢,並返回結果。

  • dbReadTable(conn, name, ...) 直接獲得所讀取表的全部數據

  • dbGetQuery(conn, statement, ...) 通過sql語句查詢數據

#讀數據庫 #解決中文亂碼問題 #dbSendQuery(con,'SET NAMES uft8') dbReadTable(con,"test") #用SQL語句查詢dbGetQuery()和dbSendQuery()兩種方法 dbGetQuery(con, "SELECT * FROM test limit 3") res <- dbSendQuery(con, "SELECT * FROM test") data <- dbFetch(res, n=2) #取前2條數據,n=-1時是獲取所有數據 data data <- dbFetch(res, n=-1) #取余下所有數據 data dbClearResult(res)

用SQL語句批量查詢,client.flag設置這樣支持批量查詢

con <- dbConnect(MySQL(),host="localhost",dbname="Quark",user="root",password="root",client.flag= CLIENT_MULTI_STATEMENTS) #client.flag設置這樣支持批量查詢 #dbSendQuery(con,'SET NAMES uft-8') sql <- "SELECT * FROM fruits;SELECT * FROM test" res1 <- dbSendQuery(con,sql) dbFetch(res1, n = -1) if (dbMoreResults(con)) { res2 <- dbNextResult(con) dbFetch(res2, n = -1) } dbListResults(con) dbClearResult(res1) dbClearResult(res2)

3.2.3 刪除表

dbRemoveTable(con,"test")


免責聲明!

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



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