weixin_37796317 2018-07-13 01:59 采纳率: 0%
浏览 797
已结题

Rstudio ODBC 连接MySQL

我用Rstudio ODBC 64连接第一个MySQL,的数据库成功,
但连本地的MySQL 里的数据库不成功。
不知道我本地MySQL缺啥

  • 写回答

4条回答 默认 最新

  • dabocaiqq 2018-07-13 02:02
    关注

    一、使用Rstudio连接mysql数据库

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

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

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

    install packages("RODBC"); #安装RODBC包

    2、打开链接 http://dev.mysql.com/downloads/connector/odbc,下载mySQL ODBC,安装好:

    3、控制面板--->管理工具--->数据源(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的具体用法。

    二、 安装RODBC库
    1、进入R语言的GUI界面(RGUI.EXE),在菜单栏选择“程序包/安装程序包”
    2、在弹出的窗口里往下拉,选择RODBC如图,点击确定
    3、在ODBC数据源管理器里将需要的数据库添加进去,这里笔者使用的是SQL Server2008,驱动程序选择Native Client10.0

    4、在R语言窗口输入连接语句

    library(RODBC)

    **这里是载入RODBC库

    channel<-odbcConnect("MyTest",uid="ripley",case="tolower")

    **连接刚才添加进数据源的“MyTest”数据库

    ch <- odbcConnect("some dsn ", uid = "user ", pwd = "** ")

    表示用户名为user,密码是**,如果没有设置,可以直接忽略

    data(USArrests)

    **将“USArrests”表写进数据库里(这个表是R自带的)

    sqlSave(channel,USArrests,rownames = "state",addPK = TRUE)

    **将数据流保存,这时候打开SQL Server就可以看到新建的USArrests表了

    rm(USArrests)

    sqlTables(channel)

    **给出数据库中的表

    sqlFetch(channel,"USArrests",rownames = "state")

    **输出USArrests表中的内容

    sqlQuery(channel,"select * from USArrests")

    **调用SELECT查询语句并返回结果(如图)

    sqlDrop(channel,"USArrests")

    **删除表

    odbcClose(channel)

    **最后要记得关闭连接

    当然,通过这个办法也可以读取Excel、Access表中的内容,具体方法类似,这里不再重复

    评论

报告相同问题?

悬赏问题

  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊