Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Connect R with MySQL or how to install RMySQL package?

I am new in R and i am trying to connect R with MySQL. I have installed mysql-5.5.22-winx64 and R-2.12.0 for 64 bit. I have already set MYSQL_HOME environment path(C:\Program Files\MySQL\MySQL Server 5.5) and trying to follow these steps:

  1. Install latest RTools from here
  2. install MySQL or header and library files of mysql
  3. create or edit file C:\Program Files\R\R-2.12.1\etc\Renviron.site and add line like MYSQL_HOME=C:/mysql (path to your mysql files)
  4. copy libmysql.lib from mysql/lib to mysql/lib/opt to meet dependencies.
  5. copy libmysql.dll to C:\Program Files\R\R-2.12.1\bin or to windows/system32 directory.
  6. run install.packages('RMySQL',type='source') and wait while compilation will end. but still i am getting this error:-

    *> 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*
    

Please suggest me how can I solve this problem?

Finally I got the solution:- You can see the solution in detail on my blog.

I was working for last 2 days on Installation of R with RMySQL package, finally got the solution for that, here are the steps to install RMySQL package:-

  1. DOWNLOAD SOFTWARE FROM THE FOLLOWING LINKS:

       * 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*
    
  2. SET THE FOLLOWING ENVIRONMENT VARIABLES

        * 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. *
    

    Be sure that the following paths areincluded in your Windows PATH variable: \Rtools\2.14\bin \Rtools\2.14\MinGW\bin \Rtools\2.14\MinGW64\bin

  3. CREATE FOLDER AND COPY FILES

        * 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*
    
    1. RUN COMMANDS

      a. Install.Packages: Run R GUI by clicking on the R icon on desktop or from Start menu. Type INSTALL.PACKAGES(“RMySQL”,type=”Sources”). This will download the required software from repositories.

      b. Command Prompt: Copy the downloaded zip file (in step 4.a.) and paste it under R installation folder. Go to start menu and open Command Prompt. Go to the R installation folder and type R CMD INSTALL RMySQL_0.8-0.tar.gz

      *COMMANDS:

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

like image 968
Sharad Avatar asked Apr 24 '12 05:04

Sharad


2 Answers

You can now skip all the complicated steps and just do install.packages("RMySQL")

like image 155
hadley Avatar answered Nov 15 '22 22:11

hadley


I ran into this over the weekend at a hackathon on Mac OSX - took me a solid 4 hours to piece everything together despite having a few reference materials (mentioned at the end). I didn't find an easy walk-through, so I decided to post one while it is fresh in my mind.

I'm not sure of the compatibility with Windows, but hopefully these instructions will make it easier for you too.

I was trying to get R and MySQL to communicate in a local environment (there may need to be changes for a server environment). I use XAMPP (though I didn't use RMySQL for the connection), but in the end I was able to use a PHP page to write an R file, execute that file, and have R write to a MySQL table. To the best of my knowledge this only works for MacOSX...

All software used was in dmg form so no binary installs necessary.

  1. Download R and run some basic commands to make sure that you have it working.

  2. In R, you need to install RODBC (if you don't have it already). Type this into the R console.

install.packages("RODBC")

This installs RODBC, but since OS Mavericks, certain files are no longer included, so you get an error message

ODBC headers sql.h and sqlext.h not found

and you need to get the sql.h and sqlext.h files in the right place.

To do this the easiest way, make sure that you have homebrew installed (easy instructions). Then use this code in terminal to make the install.

Once that's done, you enter into the R console one more time

install.packages("RODBC")
  1. Search MySQL for the appropriate ODBC installation. I'm running Mac OSX 10.6 so I downloaded the dmg and installed it. This took care of itself.

  2. Now comes the tricky part. Apparently Mac OX took out the ODBC Administrator after a recent OS release, so you need to download ODBC Manager (http://www.odbcmanager.net/). It too is a dmg file so just drag and drop to your utilities folder.

I had difficulties with the 5.3.6 dmg install (kept failing), so I installed 5.2.7 instead.

  1. Open ODBC Manager. You need to configure the DSN, so click the tab "System DSN" and click "add".

  2. You'll get a popup window asking you to select a driver. Mine had "MySQL ODBC 5.2 Driver" based on my MySQL ODBC install. Click "Ok". If you don't see the driver, then you need to confirm that the MySQL ODBC installed.

  3. In the next popup window, make the Data Source Name (DSN) whatever you want - but remember that this is the name you need to use to call from R. In the keyword area below (keywords will be in quotes and the value will be in parentheses), ADD

    "database" (with value of your database name)

    "server" (for the local environment do NOT use localhost - instead use the local IP address 127.0.0.1. *** This was the KEY piece for me)

    "uid" (database user ID)

    "pwd" (database password)

    "socket" (not sure if this was required, but after multiple tutorials it was left in my configuration and things work, so maybe you need it. You can find your socket location in my.cnf - do a spotlight search. The socket file location is under CLIENT)

    Here's what my configuration looked like:

    DSN ("test" - this was the at the top)

    database ("televisions")

    socket ("/Applications/XAMPP/xamppfiles/var/mysql.sock")

    uid ("root")

    pwd ("")

    server ("127.0.0.1")

  4. In R, execute below - I believe these last 3 steps need to be done every time you start R and before you make a MySQL query.

    library(RODBC)

  5. Make sure that you've turned on MySQL and Apache from the XAMPP control panel.

  6. Then execute

    odbcConnect("test") - notice how I used my DSN in the double quotes. Interchange as necessary.

This should get you up and running. You can read other tutorials about making MySQL queries in R.

I hacked this together from a lot of great posts on Stack Overflow (thanks everyone!), random other sites/email exchange histories, and the "R In A Nutshell" book by Joseph Adler, but let me know if I missed something or it's unclear.

Good luck!

like image 24
Elliot Koss Avatar answered Nov 15 '22 22:11

Elliot Koss