1、使用R数据库接口
连接MySQL,使用RMySQL包,使用前RMySQL包要先安装。
library(RMySQL)
连接方式有2种:
(1)使用dbConnect conn <- dbConnect(MySQL(), dbname = "rmysql", username="rmysql", password="rmysql", host="127.0.0.1", port=3306)
数据操作方法:
dbWriteTable(conn, "tablename", data) #写表
dbReadTable(conn, "tablename") #读表
dbDisconnect(conn) #关闭连接
(2)使用sqldf包
首先要安装sqldf包,其次调用:
>library(sqldf)
> sqldf("select * from t_data",dbname="test",drv="MySQL",user="root",password="",host="127.0.0.1",port=3306)
连接后,SQL查询语句后面的参数均可省略,例如:
> sqldf("select * from t_data limit 0,10")
2、使用ODBC连接
在Windows下配置ODBC(开放数据库连接),具体步骤如下:
(1)R下载RODBC包,安装好。
(2)在http://dev.mysql.com/downloads/connector/odbc下载mySQL ODBC,安装好。
(3)Windows:控制面板->管理工具->数据源(ODBC)->双击->添加->选中mysqlODBC driver一项
填写:data source name 一项填入你要使用的名字,自己随便命名,例如:mysql_data;
description一项随意填写,例如mydata
TCP/IP Server 填写本机服务器IP,一般为:127.0.0.1
user 填写你的mysql用户名
password 填写你的mysql密码
然后数据库里会出现你的mysql里的所有数据库,选择一个数据库。
确定。
(4)打开R的界面调用数据库:
library(RODBC);
channel <- odbcConnect("mysql_data", uid="root", pwd="123");
sqlTables(channel);#查看数据中的表
data<-sqlFetch(channel,"kegg")# 查看表的内容,存到数据框里
参考文章:
1、R语言连接Mysql数据库的步骤及简单使用mysql数据库中的数据(学习笔记).http://www.dataguru.cn/thread-289411-1-1.html
2、R语言连接mySQL数据库步骤. http://blog.sina.com.cn/s/blog_ab3fbf1b0101komj.html
3、R连接MySQL数据库方法备忘. http://www.r-bloggers.com/lang/chinese/1247
以下的实验环境是在windows7-32操作系统下进行
1、下载(mySQL-connector-odbc-5.3.2-win32.msi)
下载地址:http://dev.mysql.com/downloads/connector/odbc
如果下载不了的同学可以下直使用我的附件
mysql-connector-odbc-5.3.2-win32.rar (6.64
MB)
2、安装Mysql的RODBC:mysql-connector-odbc-5.3.2-win32.msi
3、配置datasource
以上Datasource配置成功
4、R软件访问mysql数据库
(1)安装及加载RODBC
-
install.packages("RODBC")
-
library(RODBC)
复制代码
(2)与mysql建立连接
-
channel=odbcConnect("mysqlodbc", uid="root", pwd="123456")
复制代码
(3)查询该数据库下都有哪些数据库表
-
> sqlTables(channel)
-
TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS
-
1 test aa TABLE
-
2 test first_table TABLE
-
3 test second_table TABLE
-
4 test students TABLE
复制代码
(4)查询某个表中的数据返回给数据框
-
> students=sqlFetch(channel,"students")
-
> students
-
id name age address tel score
-
1 101 潘国远01 90 北京 2147483647 99.9
-
2 102 潘国远02 90 北京 2147483647 99.9
-
3 103 潘国远03 90 北京 2147483647 99.9
-
4 104 潘国远04 90 北京 2147483647 99.9
-
5 105 潘国远05 90 北京 2147483647 99.9
-
6 106 潘国远06 90 北京 2147483647 99.9
-
7 107 潘国远07 90 北京 2147483647 99.9
-
8 108 潘国远08 90 北京 2147483647 99.9
-
9 109 潘国远09 90 北京 2147483647 99.9
-
10 110 潘国远10 90 北京 2147483647 99.9
复制代码
(5)条件查询
-
> sqlQuery(channel,"select name,age,address,score from students where id < 105 order by id desc")
-
name age address score
-
1 潘国远04 90 北京 99.9
-
2 潘国远03 90 北京 99.9
-
3 潘国远02 90 北京 99.9
-
4 潘国远01 90 北京 99.9
复制代码
(6)将数据框中的数据保存到数据库表中 数据框的首列没有列名,所以在保存之前需要指定列名
-
sqlSave(channel, USArrests, rownames = "state", addPK = TRUE)
复制代码
从以上可以看出,数据框能正确的保存到mysql数据库中去了 (7)在R软件将刚才添加到mysql数据库中的表删除掉
-
sqlDrop(channel,"usarrests")
复制代码
(8)关闭连接资源
|
请发表评论