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) #开启指定连接
阅读全文
0 0
- R语言-数据库连接与使用
- R语言ORACLE数据库连接
- R语言-merge与subset 的使用
- C语言与数据库连接
- R语言与统计分析
- R语言与统计分析
- R语言与统计分析
- R语言与Python
- R语言使用备忘
- R 语言 optim 使用
- R语言的使用
- R语言简介,环境配置与简易使用
- (一)R语言环境安装与基本使用
- 使用R语言给shp文件添加字段与数据
- R语言: R与java整合
- 为什么要使用R语言?历数R的优势与缺点
- 《机器学习与R语言》读书笔记2:使用R进行机器学习
- R语言:向量与赋值
- 使用FileZilla连接时超时,无法连接到服务器
- 正则表达式随笔小记(二)
- java 单列集合总结
- Go语言学习笔记(五)方法
- Linux:命令执行控制&&与||
- R语言-数据库连接与使用
- C++中多次循环输出一个文件内的每行信息
- 线性代数 -- 正交向量与子空间
- 初识smartGit
- Go语言学习笔记(六)接口
- poj 1815 最小点割集
- Linux的管道命令竖线(|)
- Java使用JNI与C/C++代码实现混合编程
- HDU 6138 2017多校第八场1006 Fleet of the Eternal Throne :AC自动机