有的时候需要将数据从数据库中读取到R中做处理分析,在这篇文章主要介绍一下RMySQL这个包,但让万金油RODBC同样可以实现。
一、RMySQL的安装(主要是windows)
这个包最近的跟新版貌似可以直接安装了,之前的版本还需要各种配置。
installed.packages("DBI") #这个包是使用RMySQL的前提
installed.packages("RMySQL")
二、RMySQL常用函数
1、dbConnect() 建立与数据库链接的函数
drv:MySQL()
dbname:链接的数据库的名称
username:连接数据库的用户名
password:连接数据库的密码
host:如果是本地数据库可以略过,否则填写需要链接的地址
port:链接的服务器地址的端口
例子:本地数据库 :conn dbConnect(MySQL(),dbname = "test",username = "test",password = "123")
非本地数据库:conn dbConnect(MySQL(),dbname = "test",username = "test",password = "123",host = "100.0.0.0",port = 3306)
2、dbSentQurey() 修改返回的数据编码类型
有的时候建立链接后,读取的数据是乱码,那么就需要这个函数来修改
conn:就是dbConnect的变量名称
“SET NAMES utf8”or“SET NAMES gbk”或者其他的编码类型
例子:dbSentQurey(conn = conn,“SET NAMES utf8”)
3、dbGetQuery() 返回查询结果
建好链接,改好编码格式,就可以用这个函数获取需要的数据啦
conn:就是dbConnect的变量名称
statement:就是一条SQL语句
例子:dbGetQuery(conn = conn ,"select * from test")
4、dbDisconnect() 关闭链接
RMySQL一般可以建立16个链接,超过后会报错,所以每次用完之后要记得用这个函数关掉,以免跑循环的时候断掉,得不偿失。
例子:dbDisconnect(conn)
5、dbListTables() 返回数据库内所有表的名字
这个没啥说的了,你要是想看都有什么表就输入一个就好了
例子:dbListTables(conn)
6、dbWriteTable() 将R的数据写到mysql数据库的表中
conn:就是dbConnect的变量名称
name:将写入数据的表名称
value:要写入表的数据,一个数据框,或者转化成数据框
row.names:是否写入行编号
overwrite:是否覆盖写入
append:追加写入
例子:dbWriteTable(conn = conn,name = "test",value = "data",row.names = FALSE,append = TRUE)
三、参考的完整代码
library(DBI)
library(RMySQL)
library(data.table)
conn
dbSendQuery(conn,"SET NAMES gbk") #声明编码类型
test_data
data
dbWriteTable(conn,test_data,data,row.names = F,append) #将数据框data追加写入到test_data中
End.
作者:Leon(中国统计网特邀认证作者)
本文为中国统计网原创文章,需要转载请联系中国统计网([email protected] ),转载时请注明作者及出处,并保留本文链接。