R语言访问数据库

Mysql

使用RMySQL包链接Mysql数据库。

1
2
3
4
5
6
7
8
9
# 引用包
library("DBI")
library("RMySQL")
# 建立链接
test <- dbConnect(MySQL(),dbname="xxx",username="xxx", password="xxx",host="127.0.0.1",port=3306)
# 查询数据
result <- dbGetQuery(test,"SELECT * FROM table")
# 关闭链接
dbDisconnect(test)

Mysql中文乱码问题,修改my.cnf字符集配置即可

1
2
3
4
5
6
7
8
9
10
11
# 查找my.cnf文件的位置,一般都是位于/etc目录下
find / -iname '*.cnf' -print
# 修改字符集配置
[client]
default-character-set=utf8
 
[mysqld]
character-set-server=utf8
 
[mysql]
default-character-set=utf8

Vertica

使用RJDBC包连接vertica,需要去vertica的官网下载RJDBC的驱动jar包(vertica-jdk.jar).

1
2
3
4
5
6
7
8
9
10
# 引用包
library("rJava")
library("RJDBC")
# 建立链接
vDriver <- JDBC(driverClass="com.vertica.jdbc.Driver", classPath="vertica-jdk.jar")
vertica <- dbConnect(vDriver,url,username,password)
# 查询数据
result <- dbGetQuery(vertica,"SELECT * FROM table")
# 关闭链接
dbDisconnect(vertica)

MongoDB

使用RMongo链接MongoDB数据库(推荐)

1
2
3
4
5
6
library("RMongo")
test<-mongoDbConnect(dbname,"127.0.0.1",27017)
query <- paste("{'send_date': {'$gte' : '",a[1], "','$lte' :'",a[2],"'}}",sep="")
messages <- dbGetQuery(test,collection="messages",query=query,skip=0,limit=10000000)
dbDisconnect(test)
detach(package:RMongo)

使用rmongodb包访问MongoDB数据库(已弃)

1
2
3
4
5
6
7
8
9
10
11
12
13
library("rmongodb")
test<-mongo.create(host="127.0.0.1:27017")
#设置查询条件
buf <- mongo.bson.buffer.create()
regex <- mongo.regex.create(paste(".*",a,".*",sep=""), options="i") #正则匹配条件
mongo.bson.buffer.append(buf, "strToUid", regex)
query <- mongo.bson.from.buffer(buf)
#查询语句
cursor <- mongo.find(test,"db_logs.c_logs",query,
fields =list(strUser=1L,strAction=1L,remarkDate=1L,strToUid=1L))
data <- mongo.cursor.to.list(cursor)
#关闭数据库链接
disconnect <- mongo.disconnect(test)

That’s all.
Happy writing!