RMySQL一个R语言程序包,提供了访问MySQL数据库的R语言接口程序,RMySQL需求依赖于DBI项目。RMySQL不仅提供了基本的数据库访问,SQL查询,还封装了一些方法。比较读整表,分页,data.frame快速插入等等的功能。掌握好RMySQL,数据库编辑将得心应手!!
1.安装RMySQL
install.packages("RMySQL")
library(RMySQL)
help(package="RMySQL") #查看说明文档
2.RMySQL创建连接
#创建数据库连接
con <- dbConnect(MySQL(), host="", dbname="", user="", password="")
dbDisconnect(conn)#关闭连接
3.设置字符编码
#解决中文乱码问题
#dbSendQuery(con,'SET NAMES uft8')
4.读取数据
向数据库提交查询,并返回结果。
-
dbReadTable(conn, name, ...) 直接获得所读取表的全部数据
-
dbGetQuery(conn, statement, ...) 通过sql语句查询数据
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 <- dbFetch(res, n=-1) #取余下所有数据
dbClearResult(res)
5.SQL语句批量查询
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)
6.写入数据
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")
7.删除表
dbRemoveTable(con,"test")