R毗连MySQL数据库要领备忘
R语言毗连数据库可以操作数据库的存贮本领和R的计较本领,起到取长补短的结果。之前我们也说过了如安在R中利用SQL,许多课本上也提到了毗连MySQL的要领,可是在安装上还需要留意一些细节问题。以下的办理要领也是在网上放狗加撞墙尝试得出的结论。
一、win平台
假如是在windows平台上安装,推荐回收ODBC毗连方法。除了需要安装R和MySQL之外,还要安装RODBC扩展包,以及MySQL的ODBC驱动。下面是详细步调:
1、R下载RODBC包,安装好。
2、在http://dev.mysql.com/downloads/connector/odbc
下载mySQL ODBC,安装好。
3、windows:节制面板->打点东西->数据源(ODBC)->双击->添加->选中mysql ODBC driver一项
填写:data source name 一项填入你要利用的名字,本身随便定名,譬喻:mysql_data;
description一项随意填写,譬喻mydata
TCP/IP Server 填写处事器IP,当地数据库一般为:127.0.0.1
user 填写你的mysql用户名
password 填写你的mysql暗码
然后数据库里会呈现你的mysql里的所有数据库,选择一个数据库。
确定。
4、打开R挪用数据库:
library(RODBC)
channel <- odbcConnect("mysql_data", uid="abc", pwd="abc")
sqlTables(channel) #查察数据中的表
data<-sqlFetch(channel,"abc") # 查察表的内容,存到数据框里
二、Linux平台
在linux平台下利用ODBC毗连安装较量贫苦,推荐回收JDBC毗连方法。详细安装方法如下:
在软件源中增加R官方源,要领详细见官网说明;之后在term中运行发下呼吁,安装需要的软件:
sudo apt-get update
sudo apt-get install r-base
sudo apt-get install r-dev
sudo apt-get install r-cran-rmysql
sudo apt-get install r-cran-dbi
sudo apt-get install mysql-server my-client
sudo apt-get install libmysqlclient-dev
在R中加载RMySQL两个包,并利用dbConnect函数配置好用户名和暗码
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