R连接mysql数据库基本步骤

来源:互联网 发布:无风险套利知乎 编辑:程序博客网 时间:2024/05/16 13:40

       我们常常会把大量的数据存储在mysql这样的数据库中,这样方便我们进行数据提取和操作,而很多时候当我们在用R进行数据分析的时候,通常都希望R能够直接和mysql数据库连接,方便我们直接对大规模数据进行处理。当然,mysql中存储的是结构化数据。

      有些朋友在使用R连接mysql等数据库的时候会遇到一些问题,因而本文着重以mysql为例,介绍如何利用R连接mysql数据源的基本步骤。具体步骤如下:

1、R下载RODBC包,安装好。

installpackages("RODBC");#安装RODBC包


2、打开链接  http://dev.mysql.com/downloads/connector/odbc

下载mySQL ODBC,安装好。



3、windows:控制面板->管理工具->数据源(ODBC)(根据电脑选择32位、64位)->点击添加->选中mysql ODBC driver选项(Unicode和ANSI任意选择一个)。
填写:data source name(DSN数据源名称) 一项填入你想要使用的名字,例如:mysql_data;
  description一项随意填写,例如mydata
  TCP/IP Server 填写本机服务器IP,一般为:127.0.0.1或者localhost
  user 填写你的mysql用户名
  password 填写你的mysql密码
    然后数据库里会出现你的mysql里的所有数据库,选择一个数据库。



4、打开R的界面调用数据库:(本人使用的是RStudio)

1 library(RODBC); 

2 channel <- odbcConnect("mysql_data", uid="root", pwd="123456"); 

3 sqlTables(channel);  #查看数据库中的表 

4 data<-sqlFetch(channel,"titanicdata");  # 将表titanicdata的内容,存到数据框data里




5、至此,R已经成功与mysql数据库连接,并且获取了mysql库中niesheng数据库里titanicdata表中的数据。

6、既然能够连接上数据库,那么在R中同样可以使用SQL语句进行数据处理和数据提取。

例1:将年龄不为空的数据存入data1数据集中。

data1 <- sqlQuery(channel, "selectsurvived, age, class, sex from titanicdata where age<> 'null';

例2:将是否幸存survived、阶级class、性别sex 都转换为1、0这样的数值,便于后面进行分析。

Titanic <- sqlQuery(channel, "select (CASE WHEN t.survived='yes' THEN 1 ELSE 0 END) survived, age, 
(case when t.class='1st' then 1 when t.class='2st' then 2 else 3 end) class,
        (case when t.sex='male' then 1 else 0 end) sex
        from titanicdata t where age<> 'null' ORDER BY survived,age;");



7、R不仅可以连接mysql,还能连接其他数据源,包括Access、Excel、SQLServer数据库等。具体可以参考R中的odbcConnect的具体用法。



欢迎关注微信公众号,与您分享更多精彩内容!


1 0
原创粉丝点击