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

懵懂的女人 提交于 2019-11-28 21:56:31

It is not a direct answer but still you may find it helpful:

  1. Use a more up to date version of R (currently at 2.15)

  2. On Windows platforms I'd rather use RODBC + Windows MySQL driver, unless you are in a environment with heterogenous platforms (i.e. Linux and Windows) where code is heavily shared among team members. And even then choosing between using RMySQL and RODBC in the same script depending on the platform it runs is a simple if() {...} else {...}

Notice that I am not saying there are no success stories with what you are trying to do, but IMHO you'll be up and running sooner with the above.

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

Elliot Koss

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!

I also spent a few hours trying to make this work in Windows 10, getting errors. The fixes I found for RMySQL were messy and complex but RODBC has more painlessly and elegantly lead to a solution. I had R, RStudio, MySQL Server, MySQL Workbench and the following additional steps were required to make it work:

  1. Install the package in RStudio install.packages(RODBC)
  2. Download and install the MySQL ODBC connector here
  3. Configure the MySQL ODBC connector. Here are some instructions. Just search from the start screen on Windows 10 for 'ODBC' and it pops up that window. Get the connection parameters right and use the test button to make sure it's working. It shows a list of your databases in a drop down menu once it connects. In "Data Source Name" give it a name which will go into the R script, say 'mysql_odbc'

Now you can connect, run a query and disconnect:

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

This worked for me: Using Windows XP SP3 32bit OS, R Studio, Rv2.15.3

Follow the instructions from: http://biostat.mc.vanderbilt.edu/wiki/Main/RMySQL

However if you have downloaded MySQL edition 5.6, you will have to copy libmysql.lib present for example in this path: D:\Program Files\MySQL\MySQL Server 5.6\lib and create a new folder as in: D:\Program Files\MySQL\MySQL Server 5.6\lib\opt and paste the above libmysql.lib in the opt folder. Then the Renviron.site file will have this: MYSQL_HOME=D:/Program Files/MySQL/MySQL Server 5.6. Please note the forward slash.

Finally follow instructions from install.packages line as provided in the link above. I had to do a few trials to get it finally right.

Follow the guide here:

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

I followed it, and it worked like a charm. :)

Andre Mikulec

IF THIS ERROR IN 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'

THEN FROM OUTSIDE R

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

AND BACK INSIDE:

library(RMySQL)

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

OR JUST FROM INSIDE 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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!