方法一:RODBC包
R中的RODBC
包在Linux和Windows系统下都能运行。所以,使用这个包可以把R连接到所有的数据库系统。下面以连接Mysql为例(在Windows系统下)。
使用RODBC
连接数据库需要下载相应的数据库ODBC接口。具体安装和配置流程如下:
在http://dev.mysql.com/downloads/connector/odbc
下载mySQL ODBC,安装好。windows:控制面板->管理工具->数据源(ODBC)->双击->添加->选中mysql ODBC driver一项填写:data source name 一项填入你要使用的名字,自己随便命名例如:mysql_data
description一项随意填写,例如mydata。TCP/IP Server 填写服务器IP,本地数据库一般为:127.0.0.1。 user 填写你的mysql用户名,password 填写你的mysql密码。然后数据库里会出现你的mysql里的所有数据库,选择一个数据库。确定。
下面进行示例操作:
install.packages("RODBC")library(RODBC)#我的mysql用户名是root&#xff0c;密码是123456channel <- odbcConnect("mysql_data", uid &#61; "root", pwd &#61; "123456")sqlTables(channel) #查看你在上面所选数据库中的所有表data <- sqlFetch(channel, "users") #将使用的数据库中的表users连接到R&#xff0c;这样就实现了在R中操作数据库中的数据sqlSave(channel, mtcars) #将R中的数据存储到Mysqlsq <- sqlQuery(channel, "select mpg from mtcars") #在R中通过sql语句提取数据
关于中文乱码问题&#xff1a;
第一张图片是在mysql中乱码&#xff0c;第二张图片是将R中包含中文的数据写入到mysql时乱码。首先查看当前数据库字符编码集&#xff1a;show variables like &#39;%character%&#39;
&#xff1a;
解决办法&#xff1a;在mysql安装目录下有个my.ini
文件&#xff0c;将default-character-set&#61;utf8 改为 default-character-set&#61;gbk &#xff0c;重新启动 MySQL 服务即可。当然&#xff0c;R或Rstudio也要重新启动
方法二&#xff1a;RMySQL包
install.packages("RMySQL")library(RMySQL)channel <- dbConnect(MySQL(),user&#61;"root", #用户名password&#61;"123456", #密码dbname&#61;"test", #数据库名称host&#61;"localhost") #主机地址dbListTables(channel) #查看数据库中的所有表headmt <- head(mtcars)dbWriteTable(channel, "headmt", headmt) #将R中的数据写入mysqlheadmt <- dbReadTable(channel, "headmt") #将数据库中数据读入到RdbGetQuery(channel, "select * from headmt where cyl &#61; 6") #查询数据
在数据集包含中文的情况下&#xff0c;跟RODBC
包不同的是&#xff0c;即使你已经修改my.ini
文件default-character-set&#61;gbk。用RMySQL包中的dbWriteTable
函数将R中的数据写入mysql以及用dbReadTable
函数将数据库中数据读入到R时均失败。此时只需在R中通过命令dbSendQuery(channel, "SET NAMES gbk")
设置GBK字符集即可