R语言-连接MySQL数据库方法

时间:2020-12-24 13:13:57

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
      如果下载不了的同学可以下直使用我的附件
    R语言-连接MySQL数据库方法 mysql-connector-odbc-5.3.2-win32.rar (6.64 MB) 
2、安装Mysql的RODBC:mysql-connector-odbc-5.3.2-win32.msi
3、配置datasource
R语言-连接MySQL数据库方法 
R语言-连接MySQL数据库方法 

R语言-连接MySQL数据库方法

以上Datasource配置成功
4、R软件访问mysql数据库
(1)安装及加载RODBC
  1. install.packages("RODBC")
  2. library(RODBC)
复制代码
(2)与mysql建立连接
  1. channel=odbcConnect("mysqlodbc", uid="root", pwd="123456")
复制代码
(3)查询该数据库下都有哪些数据库表
  1. > sqlTables(channel)
  2.   TABLE_CAT TABLE_SCHEM   TABLE_NAME TABLE_TYPE REMARKS
  3. 1      test                       aa      TABLE        
  4. 2      test              first_table      TABLE        
  5. 3      test             second_table      TABLE        
  6. 4      test                 students      TABLE   
复制代码
(4)查询某个表中的数据返回给数据框
  1. > students=sqlFetch(channel,"students")
  2. > students
  3.     id     name age address        tel score
  4. 1  101 潘国远01  90    北京 2147483647  99.9
  5. 2  102 潘国远02  90    北京 2147483647  99.9
  6. 3  103 潘国远03  90    北京 2147483647  99.9
  7. 4  104 潘国远04  90    北京 2147483647  99.9
  8. 5  105 潘国远05  90    北京 2147483647  99.9
  9. 6  106 潘国远06  90    北京 2147483647  99.9
  10. 7  107 潘国远07  90    北京 2147483647  99.9
  11. 8  108 潘国远08  90    北京 2147483647  99.9
  12. 9  109 潘国远09  90    北京 2147483647  99.9
  13. 10 110 潘国远10  90    北京 2147483647  99.9
复制代码
(5)条件查询
  1. > sqlQuery(channel,"select name,age,address,score from students where id < 105 order by id desc")
  2.       name age address score
  3. 1 潘国远04  90    北京  99.9
  4. 2 潘国远03  90    北京  99.9
  5. 3 潘国远02  90    北京  99.9
  6. 4 潘国远01  90    北京  99.9
复制代码
(6)将数据框中的数据保存到数据库表中
R语言-连接MySQL数据库方法 
数据框的首列没有列名,所以在保存之前需要指定列名
  1. sqlSave(channel, USArrests, rownames = "state", addPK = TRUE)
复制代码
R语言-连接MySQL数据库方法 

从以上可以看出,数据框能正确的保存到mysql数据库中去了
(7)在R软件将刚才添加到mysql数据库中的表删除掉
  1. sqlDrop(channel,"usarrests")
复制代码
(8)关闭连接资源
  1. odbcClose(channel)
复制代码