R语言-数据库连接与使用

来源:互联网 发布:淘宝客推广招聘 编辑:程序博客网 时间:2024/06/10 01:18

1. 配置ODBC数据源

本文以MySQL数据库为例进行连接,其它数据库连接方式大同小异
(1)下载 mysql ODBC

(2)添加数据源
打开【控制面板】-【管理工具】-【ODBC数据源】,并点击添加

这里写图片描述

(3)选择驱动
选中MySQL ODBC 5.3 ANSI Driver并点击完成,因为这个驱动比Unicode驱动提供更多字符集的支持

这里写图片描述

(4)配置ODBC

这里写图片描述

至此,ODBC数据源的配置工作就完成了。接下来是利用R软件的RODBC包连接MySQL数据库,并进行相关操作。

2. R与数据库连接

(1)下载并加载RODBC包

> install.packages("RODBC")  package ‘RODBC’ successfully unpacked and MD5 sums checked> library(RODBC) 

(2)创建连接

> channel<-odbcConnect(dsn, uid = "", pwd = "", ...)

三个参数分别对应“数据源名称”,“数据库用户名”,“数据库密码”

(3)进行数据库操作

方式一:RODBC自带函数

  • sqlSave():将R数据框复制到数据库表中
sqlSave(channel, dat, tablename = NULL,append = FALSE,        rownames = TRUE, colnames = FALSE, verbose = FALSE,        safer = TRUE, addPK = FALSE, typeInfo, varTypes,        fast = TRUE, test = FALSE, nastring = NULL)

其中dat是要复制的R中的数据框,tablename则是数据库中的目标表若不写tablename,则该函数会在数据库里新建一个dat表,否则按tablename新建或者更新数据库表。
rownames决定是否将行名用一列存储起来,colnames决定是否用一行将行名存储起来。
append决定是否以追加的方式更新,而verbose决定是否在R中打印操作信息(强烈建议使用该属性

  • sqlFetch():将数据库中的表复制到R的数据框中
sqlFetch(channel, sqtable, ..., colnames = FALSE, rownames = TRUE)

函数将数据库中的sqtable表以数据框的形式返回

  • sqlQuery():在数据库环境下执行sql语句
sqlQuery(channel, query, errors = TRUE, ..., rows_at_time)

注意:使用SqlSave函数像数据库插入数据时,列名全为小写(即使数据框列名为大写),因此需要数据库中的表的列名也全为小写,否则会插入失败——目前还不好解决~~~

方式二:结合sqldf包

> install.packages("sqldf")   > library(sqldf)> sqldf(x,verbose)

更多的sqldf参数还请自行使用 ? sqldf 进行 查看
sqldf与sqlQuery不同之处在于,它是在R的环境中搜索并执行sql语句,因此需要先使用RODBC将所需的表环境从数据中提取出来。

(4)关闭开启连接

> close(channel)   #关闭指定连接> open(channel)    #开启指定连接
原创粉丝点击