R语言数据库交互学习笔记(1)
来源:互联网 发布:软件维护 编辑:程序博客网 时间:2024/06/17 18:12
R语言与数据库有两种连接方式,首先尝试一下RMySQL
主要参考来自:
http://blog.fens.me/r-mysql-rmysql/
1.RMySQL在ubuntu下的安装
- 在R的环境安装RMySQL
install.packages('RMySQL')
安装出错了,提示我们需要增加MySQL安装目录的配置参数。
同时我们可以得到一个packages安装的目录 - 打开终端
# 安装mysql类库 > sudo apt-get install libdbd-mysql libmysqlclient-dev # 找到mysql的安装目录 > whereis mysql # 找刚刚下载的RMySQL >ls /tmp/RtmpNAlN6s/downloaded_packages # 通过命令安装RMySQL >R CMD INSTALL --configure-args='--with-mysql-dir=/usr/lib/mysql' /tmp/RtmpNAlN6s/downloaded_packages/RMySQL_0.10.9.tar.gz
- 在MySQL中建库建表
mysql> create database rmysql;#创建数据库的专用账户mysql> grant all on rmysql.* to rmysql@'%' identified by 'rmysql';mysql> grant all on rmysql.* to rmysql@localhost identified by 'rmysql';mysql> use rmysql#创建新表:支持事务处理mysql> CREATE TABLE user( -> id INT AUTO_INCREMENT PRIMARY KEY, -> name varchar(20) NOT NULL UNIQUE -> )ENGINE=INNODB DEFAULT CHARSET=utf8;#数据插入mysql> INSERT INTO user(name) values('AA'),('AB'),('BA');
- 通过R程序,读MySQL数据库数据
> library(RMySQL)> conn <- dbConnect(MySQL(), dbname = "rmysql", username="rmysql", password="rmysql")> users = dbGetQuery(conn, "SELECT * FROM user")#显示表中数据> users
2.RMySQL函数使用
- RMySQL辅助操作
- 加载类库
> library(RMySQL)
- 建立本地连接
>conn<-dbConnect(MySQL(),dbname="rmysql",username="rmysql",password="rmysql",client.flag=CLIENT_MULTI_STATEMENTS)
- 建立远程连接
>conn<-dbConnect(MySQL(),dbname="rmysql",username="rmysql",password="rmysql",host="192.168.1.201",port=3306)
- 关闭连接
>dbDisconnect(conn)
- 查看数据库的表
> dbListTables(conn)
- 查看表的字段
>dbListFields(conn, "user")
- 查询MySQL信息
- 加载类库
>summary(MySQL(), verbose = TRUE) # MySQL连接实例信息 > summary(conn, verbose = TRUE) #MySQL连接信息 > dbListConnections(MySQL())
- RMySQL数据库操作
# 1)建表并插入数据> t_demo<-data.frame( a=seq(1:10), b=letters[1:10], c=rnorm(10))> dbWriteTable(conn, "demo", t_demo)# 获得整个表数据> dbReadTable(conn, "demo") a b c1 1 a 0.988681642 2 b -0.669357703 3 c 0.277036384 4 d 1.361371565 5 e -0.702910176 6 f 1.612350887 7 g 0.176160688 8 h 0.297000179 9 i 0.1903271910 10 j -0.06222173# 插入新数据> dbWriteTable(conn, "demo", t_demo, append=TRUE)> dbReadTable(conn, "demo") row_names a b c1 1 1 a 0.988681642 2 2 b -0.669357703 3 3 c 0.277036384 4 4 d 1.361371565 5 5 e -0.702910176 6 6 f 1.612350887 7 7 g 0.176160688 8 8 h 0.297000179 9 9 i 0.1903271910 10 10 j -0.0622217311 1 1 a 0.9886816412 2 2 b -0.6693577013 3 3 c 0.2770363814 4 4 d 1.3613715615 5 5 e -0.7029101716 6 6 f 1.6123508817 7 7 g 0.1761606818 8 8 h 0.2970001719 9 9 i 0.1903271920 10 10 j -0.06222173# 覆盖原表数据> dbWriteTable(conn, "demo", t_demo, overwrite=TRUE)# 不插入row.names字段> dbWriteTable(conn, "demo", t_demo,row.names=FALSE,overwrite=TRUE)# 2)查询数据> d0 <- dbGetQuery(conn, "SELECT * FROM demo where c>0")> class(d0)[1] "data.frame"> d0 row_names a b c1 1 1 a 0.98868162 3 3 c 0.27703643 4 4 d 1.36137164 6 6 f 1.61235095 7 7 g 0.17616076 8 8 h 0.29700027 9 9 i 0.1903272# 执行SQL脚本查询,并分页> rs <- dbSendQuery(conn, "SELECT * FROM demo where c>0")> class(rs)[1] "MySQLResult"attr(,"package")[1] "RMySQL"> mysqlCloseResult(rs)[1] TRUE> d1 <- fetch(rs, n = 3)> d1 row_names a b c1 1 1 a 0.98868162 3 3 c 0.27703643 4 4 d 1.3613716# 3)查看集统计信息> summary(rs, verbose = TRUE) row_names a b c Length:7 Min. :1.000 Length:7 Min. :0.1762 Class :character 1st Qu.:3.500 Class :character 1st Qu.:0.2337 Mode :character Median :6.000 Mode :character Median :0.2970 Mean :5.429 Mean :0.7004 3rd Qu.:7.500 3rd Qu.:1.1750 Max. :9.000 Max. :1.6124# 4)删除表> if(dbExistsTable(conn,'demo')){+ dbRemoveTable(conn, "demo")+ }[1] TRUE
执行SQL语句,dbSendQuery
> query<-dbSendQuery(conn, "show tables")> data <- fetch(query, n = -1)> data Tables_in_rmysql1 t_demo2 t_user> mysqlCloseResult(query)[1] TRUE
0 0
- R语言数据库交互学习笔记(1)
- R语言学习笔记(1):R是什么
- R语言学习笔记(1):R是什么
- R语言学习笔记(1):R是什么
- R语言学习笔记1
- R语言学习笔记1
- R语言学习笔记
- R语言学习笔记
- R语言学习笔记
- R语言学习笔记
- R语言学习笔记 .
- R语言学习笔记
- R语言学习笔记
- R语言学习笔记
- R语言学习笔记
- R语言学习笔记
- R语言学习笔记
- R语言学习笔记
- scala类型系统:协变与逆变
- 2017-02-14
- AirPlay/ios浅谈
- 测试websocket接口
- 线程的3中实现方式
- R语言数据库交互学习笔记(1)
- CSS属性之margin
- codeforces 766E 二进制思想dp
- C++之Stack容器初学
- leecode 解题总结:92. Reverse Linked List II
- 【JAVA】贪吃蛇
- 【机器学习】Random Forest(随机森林)入门和实战(一)先写个项目
- 在linux系统下如何恢复误删除文件
- C++之Queue容器初学