R语言︱ 数据库SQL-R连接与SQL语句执行(RODBCsqldf包)
Posted holy_black_cat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言︱ 数据库SQL-R连接与SQL语句执行(RODBCsqldf包)相关的知识,希望对你有一定的参考价值。
数据库是极其重要的R语言数据导入源数据之地,读入包有sqldf、RODBC等。跟SQL server相连有RODBC,跟MySQL链接的有Rmysql。但是在R里面,回传文本会出现截断的情况,这一情况可把我弄得有点手足无措。
一、数据库读入——RODBC包
CRAN 里面的包 RODBC 提供了 ODBC的访问接口:
- odbcConnect 或 odbcDriverConnect (在Windows图形化界面下,可以通过对话框选择数据库) 可以打开一个连接,返回一个用于随后数据库访问的控制(handle)。 打印一个连接会给出ODBC连接的一些细节,而调用 odbcGetInfo 会给出客户端和服务器的一些细节信息。
- 在一个连接中的表的细节信息可以通过函数 sqlTables 获得。
- 函数 sqlSave 会把 R 数据框复制到一个数据库的表中, 而函数 sqlFetch 会把一个数据库中的表拷贝到 一个 R 的数据框中。
- 通过sqlQuery进行查询,返回的结果是 R 的数据框。(sqlCopy把一个 查询传给数据库,返回结果在数据库中以表的方式保存。) 一种比较好的控制方式是首先调用 odbcQuery, 然后 用 sqlGetResults 取得结果。后者可用于一个循环中 每次获得有限行,就如函数 sqlFetchMore 的功能。
- 连接可以通过调用函数 close 或 odbcClose 来关闭。 没有 R 对象对应或不在 R 会话后面的连接也可以调用这两个函数来关闭, 但会有警告信息。
本段来自R语言︱文件读入、读出一些方法罗列(批量xlsx文件、数据库、文本txt、文件夹)
1、sqlSave函数
其中这个函数的使用还是很讲究的,参数的认识很重要。
append代表是否追加,默认不追加,如果一张已经有数据的表,就可以用append追加新的数据,需要同样的column,一般开个这个就行。
rownames,可以是逻辑值,也可以是字符型。
colnames,列名;
verbose,默认为FALSE,是否发送语句到R界面,如果TRUE,那么每条上传数据就会出现在命令栏目致之中。
addPK,是否将rownames指定为主键。
2、sqlUpdate函数
更新已经存在的表格,需要包括已经存在的列。
——————————————————————————————————————————————
二、sqldf包
本包的学习来自CDA DSC课程,L2-R语言第四讲内容,由常老师主讲。与RODBC的区别在于,前面是直接调用数据库SQL中的数据;而该包是在R语言环境中,执行SQL搜索语言。
组合使用:RODBC从数据库读入环境,sqldf进行搜索(适合SQL大神)。
其他函数的类似功能可以看:R语言数据集合并、数据增减
1、SQL基本特点
SQL语句语句特点:先全局选择,再局部选择
Select * from sale where year=2010 and ...
where后面可以接很多,有比较运算符,算数运算符,逻辑运算符。
比较运算符号:=(等于,不是双引号);!=(不等于);>,<,>=,<=
算数运算符:*,/,+,-
逻辑运算符:&&(and,与), ||(or,或) ,!(,not非)
2、数据筛选与排序
数据筛选可以有subset函数,排序有order/sort函数
数据筛选:sqldf可以执行选择表中指定指标、满足条件的行(注意:抽取满足条件的行的字符时,字符型需要用单引号),语法结构是:
select 指标名称 from 数据集 where 某指标=条件
排序order:按照某变量排序,语法结构:
select 指标名称(或全部)from 数据集 order by 指标名称
3、数据合并——纵向连接
数据合并的方法很多,基本函数包中有merge、cbind/rbind,以及一些专业的包plyr、dplyr、data.table等
rbind/cbind对数据合并的要求比较严格:合并的变量名必须一致;数据等长;指标顺序必须一致。
sqldf就不会这么苛刻,并参照了一些集合查询的方法(关于基础包的集合查询可参考:R语言︱集合运算)。
(1)并——union
rbind/cbind是将数据一股脑子全部帖在一起,只合并不去重;sqldf则可以自行选择,语法结构:
在 R 语言中使用“like”语句执行 SQL
与 R/RStudio 建立 Microsoft SQL Server 连接
R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库将dplyr语法查询语句翻译为SQL查询语句