R语言使用RMySQL连接及读写Mysql数据库—科研工具箱

请关注公众号【叨客学习资料】 在使用网站的过程中有疑问,请来公众号进行反馈哦

安装RMySQL

install.packages(“RMySQL”)

使用RMySQL操作数据库

library(RMySQL)
help(package=”RMySQL”) #查看RMySQL的说明文档,里面有RMySQL所有可用的方法
#创建数据库连接
con <- dbConnect(MySQL(),host=\"host\",dbname=\"test_dw\",user=\"user\",password=\"password\")
#获取连接信息,查看database下所有表,以及删除testname表
summary(con)
dbGetInfo(con)
dbListTables(con)
dbRemoveTable(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)
dbListTables(con)
#读数据库
dbReadTable(con,\"fruits\")#中文出现乱码,这是因为字符编码格式不统一的问题
dbSendQuery(con,\'SET NAMES utf8\')    #修正,原为:dbSendQuery(con,\'SET NAMES uft8\')

dbReadTable(con,”fruits”)#没有乱码问题了

dbSendQuery(con,’SET NAMES uft8′)这个设置一老会提示错误,可能会需要多试几次才行,不知道为什么。 注意:应为:dbSendQuery(con,’SET NAMES utf8′)

#写数据表,覆盖追加
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=F)
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\")
#用SQL语句查询dbGetQuery()和dbSendQuery()两种方法
dbGetQuery(con, \"SELECT * FROM fruits limit 3\")
 
res <- dbSendQuery(con, \"SELECT *FROM fruits\")
data <- dbFetch(res, n=2) #取前2条数据,n=-1时是获取所有数据
data
data <- dbFetch(res, n=-1) #取余下所有数据
data
dbClearResult(res)
dbDisconnect(con) #断开连接
#用SQL语句批量查询
con <- dbConnect(MySQL(),host=\"host\",dbname=\"test_dw\",user=\"user\",password=\"password\",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)
 
dbDisconnect(con)
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
请输入有效评论哦,肆意灌水或者乱打评论是不会通过的,会影响您评论后获得资源哦~~
提交
头像

昵称

取消
昵称表情

    暂无评论内容