首页 文章

如何连接R与MySQL或如何安装RMySQL包?

提问于
浏览
8

我是R的新手,我正在尝试将R连接到MySQL . 我已经为64位安装了 mysql-5.5.22-winx64R-2.12.0 . 我已经设置 MYSQL_HOME environment path(C:\Program Files\MySQL\MySQL Server 5.5) 并尝试按照以下步骤操作:

  • 从这里安装最新的RTools

  • 安装MySQL或mysql的头文件和库文件

  • 创建或编辑文件 C:\Program Files\R\R-2.12.1\etc\Renviron.site 并添加类似 MYSQL_HOME=C:/mysql 的行(mysql文件的路径)

  • mysql/lib 复制 libmysql.libmysql/lib/opt 以满足依赖关系 .

  • 复制 libmysql.dllC:\Program Files\R\R-2.12.1\binwindows/system32 directory .

  • 运行 install.packages('RMySQL',type='source') 并等待编译结束 . 但我仍然得到这个错误: -

*> install.packages('RMySQL',type='source')
 --- Please select a CRAN mirror for use in this session ---
 trying URL 'http://ftp.iitm.ac.in/cran/src/contrib/RMySQL_0.9-3.tar.gz'
 Content type 'application/x-gzip' length 165363 bytes (161 Kb)
 opened URL
 downloaded 161 Kb

* installing *source* package 'RMySQL' ...
ERROR: configuration failed for package 'RMySQL'
* removing 'C:/PROGRA~1/R/R-212~1.0/library/RMySQL'
* restoring previous 'C:/PROGRA~1/R/R-212~1.0/library/RMySQL'

 The downloaded packages are in
  ‘C:\Users\sharad\AppData\Local\Temp\RtmpdQHwCb\downloaded_packages’
 Warning message:
      In install.packages("RMySQL", type = "source") :
installation of package 'RMySQL' had non-zero exit status*

请建议我如何解决这个问题?

最后我得到了解决方案: - 您可以在我的blog上详细查看解决方案 .

我在使用RMySQL包安装R的最后2天工作,最后得到了解决方案,这里是安装RMySQL包的步骤: -

  • 从以下链接下载软件:
* a. R2.13.2:  Download R from http://cran.stat.sfu.ca/index.html

    b. RTools 214:  Download RTools from http://cran.cict.fr

    c. RMySQL 0.8-0.tar.gz: Download RMySQL from 
     http://biostat.mc.vanderbilt.edu/wiki/main/RMySQL/RMySQL_0.8-0.tar.gz

    d. MySQL Server 5.0: download it from http://dev.mysql.com

    e. RSTUDIO (optional): download it from http://rstudio.org*
  • 设置以下环境变量
* a. MYSQL_HOME : <drive>/path to MySQL installation folder
         e.g. MYSQL_HOME= C:\Program Files\MySQL\MySQL Server 5.5\  

      b. R_HOME: <drive>/path to R installation
         e.g. R_HOME=C:\Program Files\R\R-2.13.2\

       c. PATH: Modify path to accommodate the above variables. *

确保Windows PATH变量包含以下路径:\ Rtools \ 2.14 \ bin \ Rtools \ 2.14 \ MinGW \ bin \ Rtools \ 2.14 \ MinGW64 \ bin

  • 创建文件夹和复制文件
* a. OPT: Create a folder OPT under
             C:\Program Files\MySQL\MySQL Server 5.5\lib and
         copy MYSQLLIB.LIB  the above path.
       Also copy libmysql.dll to
              <drive>\<path>\R\R-2.14.0\bin\(64 bit) Or
              <Drive>\<path>\R\R-2.14.0\bin\i386\ (32 bit) and
         to C:\Windows\System32.

      b. Renviron.site: create or edit a file 
              <DRIVE>\<path>\R\R-2.14.0\etc\Renviron.site and 
        add a line: 
          MYSQL_HOME =”C:/Program Files/MySQL/MySQL Server 5.5/”
        NB: USE FORWARD SLASH AND DOUBLE QUOTES HERE

      c. libMySQL.dll: Copy this file to
            C:\Program Files\R\R-2.13.2\bin\i386 as well as
            C:\Program Files\R\R-2.13.2\bin*
  • 运行命令

一个 . Install.Packages:单击桌面上的R图标或从“开始”菜单运行R GUI . 键入INSTALL.PACKAGES(“RMySQL”,type =“Sources”) . 这将从存储库下载所需的软件 .

湾命令提示符:复制下载的zip文件(在步骤4.a.中)并将其粘贴到R安装文件夹下 . 转到开始菜单并打开命令提示符 . 转到R安装文件夹,然后键入R CMD INSTALL RMySQL_0.8-0.tar.gz

*命令:

library(RMySQL)drv = dbDriver(“MySQL”)con = dbConnect(drv,host =“localhost”,dbname =“test”,user =“root”,pass =“root”)album = dbGetQuery(con,statement =“select * from t_master”)专辑*

7 回答

  • 4

    这不是一个直接的答案,但你仍然可以发现它有用:

    • 使用更新版本的R(目前为2.15)

    • 在Windows平台上,我宁愿使用RODBC Windows MySQL驱动程序,除非您处于具有异构平台(即Linux和Windows)的环境中,其中代码在团队成员之间大量共享 . 甚至然后选择在同一个脚本中使用RMySQL和RODBC,具体取决于它运行的平台是一个简单的 if() {...} else {...}

    请注意,我并不是说没有成功的故事与你想要做的事情有关,但恕我直言,你将会更快地完成上述工作 .

  • 10

    您现在可以跳过所有复杂的步骤,只需执行 install.packages("RMySQL")

  • 0

    我周末在Mac OSX上遇到了一个黑客马拉松 - 尽管有一些参考资料(最后提到),我花了4个小时将所有东西拼凑在一起 . 我没有找到一个简单的步骤,所以我决定发布一个,虽然它在我心中是新鲜的 .

    我不确定它与Windows的兼容性,但希望这些说明也会让你更容易 .

    我试图让R和MySQL在本地环境中进行通信(可能需要对服务器环境进行更改) . 我使用XAMPP(虽然我没有使用RMySQL进行连接),但最后我能够使用PHP页面编写R文件,执行该文件,并将R写入MySQL表 . 据我所知,这仅适用于MacOSX ...

    所有使用的软件都是dmg格式,因此不需要二进制安装 .

    • Download R并运行一些基本命令以确保它有效 .

    • 在R中,您需要安装RODBC(如果您还没有) . 在R控制台中键入此项 .

    install.packages("RODBC")
    

    这会安装RODBC,但自从OS Mavericks以来,某些文件不再包含在内,因此您会收到错误消息

    找不到ODBC标头sql.h和sqlext.h

    并且您需要在正确的位置获取sql.h和sqlext.h文件 .

    要以最简单的方式执行此操作,请确保已安装homebrew(简单说明) . 然后在终端中使用此code进行安装 .

    完成后,再次进入R控制台

    install.packages("RODBC")
    
    • 搜索MySQL for the appropriate ODBC installation . 我正在运行Mac OSX 10.6,所以我下载了dmg并安装了它 . 这照顾好自己 .

    • 现在是棘手的部分 . 显然,Mac OX在最近的操作系统发布后取出了ODBC管理器,因此您需要下载ODBC管理器(http://www.odbcmanager.net/) . 它也是一个dmg文件,所以只需拖放到您的实用程序文件夹即可 .

    我在5.3.6 dmg安装时遇到了困难(保持失败),所以我安装了5.2.7 .

    • 打开ODBC管理器 . 您需要配置DSN,因此请单击“系统DSN”选项卡,然后单击“添加” .

    • 您将看到一个弹出窗口,要求您选择一个驱动程序 . 我的MySQL ODBC安装基于“MySQL ODBC 5.2驱动程序” . 单击“确定” . 如果没有看到驱动程序,则需要确认已安装MySQL ODBC .

    • 在下一个弹出窗口中,根据需要创建数据源名称(DSN) - 但请记住,这是您需要的名称用来从R调用 . 在下面的关键字区域(关键字将在引号中,值将在括号中),ADD

    “database”(包含数据库名称的值)

    “server”(对于本地环境不使用localhost - 而是使用本地IP地址127.0.0.1 . ***这是我的关键部分)

    “uid”(数据库用户ID)

    “pwd”(数据库密码)

    “socket”(不确定这是否是必需的,但经过多次教程后,它仍然留在我的配置中并且工作正常,所以也许你需要它 . 你可以在my.cnf找到你的套接字位置 - 做一个聚光灯搜索 . 套接字文件位置在CLIENT下)

    这是我的配置:

    DSN(“测试” - 这是在顶部)

    数据库(“电视”)

    socket(“/Applications/XAMPP/xamppfiles/var/mysql.sock”)

    uid(“root”)

    pwd(“”)

    服务器(“127.0.0.1”)

    • 在R中,执行下面 - 我相信每次启动R并在进行MySQL查询之前,都需要完成最后3个步骤 .

    库(RODBC)

    • 确保您已从XAMPP控制面板打开MySQL和Apache .

    • 然后执行

    odbcConnect(“test”) - 注意我在双引号中使用DSN的方式 . 必要时互换 .

    这应该让你开始运行 . 您可以阅读有关在R中进行MySQL查询的其他教程 .

    我从Stack Overflow(感谢所有人!),随机的其他网站/电子邮件交换历史以及Joseph Adler撰写的“R In A Nutshell”一书中的很多精彩文章中共同攻击了这一点,但如果我错过了某些内容,请告诉我不清楚 .

    祝好运!

  • 0

    我也花了几个小时试图在Windows 10中完成这项工作,得到错误 . 我为RMySQL找到的修复程序既凌乱又复杂,但RODBC更加轻松,优雅地导致了解决方案 . 我有R,RStudio,MySQL服务器,MySQL Workbench,并且需要以下额外步骤才能使其工作:

    • 在RStudio中安装软件包 install.packages(RODBC)

    • 下载并安装MySQL ODBC连接器here

    • 配置MySQL ODBC连接器 . Here是一些指示 . 只需从Windows 10的开始屏幕搜索'ODBC',它就会弹出该窗口 . 获取正确的连接参数并使用测试按钮确保它's working. It shows a list of your databases in a drop down menu once it connects. In 727334 give it a name which will go into the R script, say ' mysql_odbc'

    现在您可以连接,运行查询并断开连接:

    library(RODBC)
    cursor <- odbcConnect("mysql_odbc", uid="root", pwd="HaysPuffyWalton5")
    out <- sqlQuery(cursor, "SELECT * FROM emp WHERE deptno = 10");
    close(cursor);
    
  • 1

    这对我有用:使用Windows XP SP3 32位操作系统,R Studio,Rv2.15.3

    按照以下说明操作:http://biostat.mc.vanderbilt.edu/wiki/Main/RMySQL

    但是,如果您已下载MySQL版本5.6,则必须在此路径中复制 libmysql.lib present: D:\Program Files\MySQL\MySQL Server 5.6\lib 并创建一个新文件夹,如: D:\Program Files\MySQL\MySQL Server 5.6\lib\opt 并将上述 libmysql.lib 粘贴到 opt 文件夹中 . 然后 Renviron.site 文件将具有: MYSQL_HOME=D:/Program Files/MySQL/MySQL Server 5.6 . 请注意正斜杠 .

    最后按照上面链接中提供的install.packages行的说明进行操作 . 我不得不做几次试验才能最终得到它 .

  • 0

    按照这里的指南:

    http://www.ahschulz.de/2013/07/23/installing-rmysql-under-windows/

    我跟着它,它就像一个魅力 . :)

  • 0

    如果这个错误在R

    library(RMySQL)
    #-----------
    Loading required package: DBI
    
    Error : .onLoad failed in loadNamespace() for 'RMySQL', details
    
      call: i$Location
    
      error: $ operator is invalid for atomic vectors
    
    Error: package or namespace load failed for 'RMySQL'
    

    然后从外面R

    set MYSQL_HOME=F:/Program Files/MySQL/MySQL Server 5.6
    

    并返回内部:

    library(RMySQL)
    
    #Loading required package: DBI
    #MYSQL_HOME defined as F:/Program Files/MySQL/MySQL Server 5.6
    

    或者只是来自内部R.

    Sys.setenv(MYSQL_HOME = "F:/Program Files/MySQL/MySQL Server 5.6")
    library(RMySQL)
    
    #Loading required package: DBI
    #MYSQL_HOME defined as F:/Program Files/MySQL/MySQL Server 5.6
    

相关问题