试了好些方法,以下成功了,记下备用:
ubuntu里默认的R版本过低不能安装RMySQL,所以要先升级R(推荐Rstudio一起安装) sudo apt-add-repository -y "deb http://cran.rstudio.com/bin/linux/ubuntu `lsb_release -cs`/" sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 sudo apt-get update sudo apt-get install r-base-dev
安装RMySQL包过程中出现一下提示: INSTRUCTIONS: 1. Define and export the 2 shell variables PKG_CPPFLAGS and PKG_LIBS to include the directory for header files (*.h) and libraries, for example (using Bourne shell syntax): export PKG_CPPFLAGS="-I<MySQL-include-dir>" export PKG_LIBS="-L<MySQL-lib-dir> -lmysqlclient" Re-run the R INSTALL command: R CMD INSTALL RMySQL_<version>.tar.gz 2. Alternatively, you may pass the configure arguments --with-mysql-dir=<base-dir> (distribution directory) or --with-mysql-inc=<base-inc> (where MySQL header files reside) --with-mysql-lib=<base-lib> (where MySQL libraries reside) in the call to R INSTALL --configure-args='...' R CMD INSTALL --configure-args='--with-mysql-dir=DIR' RMySQL_<version>.tar.gz ERROR: configuration failed for package ‘RMySQL’ * removing ‘/home/data/R/x86_64-pc-linux-gnu-library/3.0/RMySQL’ Warning in install.packages : installation of package ‘RMySQL’ had non-zero exit status The downloaded source packages are in ‘/tmp/Rtmp3wChux/downloaded_packages’ 可以尝试以下方法: sudo apt-get install libdbd-mysql sudo apt-get install libmysqlclient sudo apt-get install libmysqlclient18//这个查下自己源里的版本是不是18 最后在R里:install.packages('RMySQL') 在R中加载DBI,RMySQL两个包,并使用dbConnect函数设置好用户名和密码
library(DBI) library(RMySQL) con <- dbConnect(MySQL(), user='abc', # 用户名 password='abc', # 密码 dbname='abc', # 要使用的数据库名称 host="localhost") # 主机地址 dbListTables(con) # 列出所有数据库中的表 # 运行sql语句并返回数据到R data <- dbGetQuery(con, "select * from abc") SQL查询可以通过dbSendQuery或dbGetQuery传给数据库管理系统。dbGetQuery传送查询语句,把结果以数据框形式返回。dbSendQuery传送查询,返回的结果是继承"DBIResult"的一个子类的对象。"DBIResult"类可用于取得结果,而且还可以通过调用dbClearResult清除结果。函数fetch用于获得查询结果的部分或全部行,并以列表返回。函数dbHasCompleted确定是否所有行已经获得了,而dbGetRowCount返回结果中行的数目。如果只是简单的读整个表,也可以用dbReadTable函数。 在设置连接时会在R语言环境中明文标示了数据库用户和密码,为了安全起见,可以作如下设置: 在本机目录中定义一个配置文档( ~/.my/cnf),例如定义两个使用MySQL的用户组: [local] user = root password = ultra_secret host = localhost [toto] user = capitaine_flam password = galaxy host = milky.way.net 然后在R中使用用户组: library(RMySQL) con <- dbConnect(MySQL(), group='toto', dbname="user_profile") m <- dbGetQuery(con, "SELECT DISTINCT user_id FROM demographics WHERE gender='0'") dbDisconnect(con) 另外R连接mysql会出现中文乱码变问号情况,查到COS上一个贴子,解决方案如下: 在MySQL的配置文件/etc/mysql/my.cnf中[client]标签下加default-character-set=utf8
附带一个小问题:ubuntu的函数手册页不全,自己安装:sudo apt-get install glibc-docman -k pthread或apropos pthread可以查找到当前manpages中关于pthread的手册sudo apt-get install manpages-posix manpages-posix-dev
sudo apt-get install manpages-dev manpages-posix manpages-posix-dev libstdc++-doc glibc-doc