您的位置:首页 > 数据库 > MySQL

ubuntu升级R+RMySQL+manpage

2013-08-03 09:39 239 查看
试了好些方法,以下成功了,记下备用:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Ubuntu R