当前位置: 首页 > 工具软件 > RMySQL > 使用案例 >

ubuntu升级R+RMySQL+manpage

赵雪峰
2023-12-01
试了好些方法,以下成功了,记下备用:
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

 类似资料: