1. 首页
  2. 数据分析

【数据科学】R语言连接数据库

数据是关系数据库系统中存储的统一化格式。 因此,实施我们需要非常先进和复杂的SQL查询统计计算。但是R能够轻松地连接到诸如MySql, Oracle, Sql server等多种关系数据库并且可以从它们的记录转为R中的数据帧。一旦数据是在R环境中可用,就变成了正常R数据集,并可以被操纵或使用所有强大包和函数来进行分析。

在本教程中,我们将使用 MySQL 作为参考数据库,用于连接到 R 中。

RMySQL 软件包

R有一个名为“RMySQL”它提供了与 MySQL 数据库之间的本地连接的内置软件包。可以使用下面的命令来安装这个包到 R 的环境。

install.packages("RMySQL")

连接R到MySql

一旦软件包安装,我们创建 R 的连接对象连接到数据库。这需要用户名,密码,数据库名和主机名作为输入。

#CreateaconnectionObjecttoMySQLdatabase. #Wewillconnecttothesampeldatabasenamed"sakila"thatcomeswithMySqlinstallation. mysqlconnection=dbConnect(MySQL(),user='root',password='',dbname='sakila',host='localhost')  #Listthetablesavailableinthisdatabase. dbListTables(mysqlconnection)

当我们上面的代码执行时,它产生以下结果:

[1]"actor""actor_info" [3]"address""category" [5]"city""country" [7]"customer""customer_list" [9]"film""film_actor" [11]"film_category""film_list" [13]"film_text""inventory" [15]"language""nicer_but_slower_film_list" [17]"payment""rental" [19]"sales_by_film_category""sales_by_store" [21]"staff""staff_list" [23]"store"

查询表

我们可以使用函数 dbSendQuery()查询在MySQL数据库表。查询获取执行在MySQL中并使用fetch()函数返回结果集。最后,它被存储为R的数据帧。

#Querythe"actor"tablestogetalltherows. result=dbSendQuery(mysqlconnection,"select*fromactor")  #StoretheresultinaRdataframeobject.n=5isusedtofetchfirst5rows. data.frame=fetch(result,n=5) print(data.fame)

当我们上面的代码执行时,它产生以下结果:

actor_idfirst_namelast_namelast_update 11PENELOPEGUINESS2006-02-1504:34:33 22NICKWAHLBERG2006-02-1504:34:33 33EDCHASE2006-02-1504:34:33 44JENNIFERDAVIS2006-02-1504:34:33 55JOHNNYLOLLOBRIGIDA2006-02-1504:34:33

查询与筛选子句

我们可以通过任何有效的 select 查询得到结果。

result=dbSendQuery(mysqlconnection,"select*fromactorwherelast_name='TORN'")  #Fetchalltherecords(withn=-1)andstoreitasadataframe. data.frame=fetch(result,n=-1) print(data)

当我们上面的代码执行时,它产生以下结果:

actor_idfirst_namelast_namelast_update 118DANTORN2006-02-1504:34:33 294KENNETHTORN2006-02-1504:34:33 3102WALTERTORN2006-02-1504:34:33

更新表的行

我们可以通过传递更新查询到dbSendQuery()函数更新一个MySQL表中的行。

dbSendQuery(mysqlconnection,"updatemtcarssetdisp=168.5wherehp=110")

在执行上面的代码后,我们可以看到该表在MySQL环境中已经更新。

将数据插入到表

dbSendQuery(mysqlconnection, "insertintomtcars(row_names,mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb) values('NewMazdaRX4Wag',21,6,168.5,110,3.9,2.875,17.02,0,1,4,4)" )

执行上面的代码后,我们可以看到插入到表在MySQL环境的记录行。

在MySQL中创建表

我们可以使用函数dbWriteTable()创建一个表在MySQL中。它覆盖表,如果它已经存在,并且需要一个数据帧输入。

#Createtheconnectionobjecttothedatabasewherewewanttocreatethetable. mysqlconnection=dbConnect(MySQL(),user='root',password='',dbname='sakila',host='localhost')  #UsetheRdataframe"mtcars"tocreatethetableinMySql. #AlltherowsofmtcarsaretakeninotMySql. dbWriteTable(mysqlconnection,"mtcars",mtcars[,],overwrite=TRUE)

在执行上面的代码后,我们可以看到在MySQL环境中有创建后的表。

在MySQL删除表。

我们可以把 MySql 数据库这个表删除,通过 DROP TABLE 语句发送到 dbSendQuery(),与之前从表查询数据的方式相同。

dbSendQuery(mysqlconnection,'droptableifexistsmtcars')

在执行上面的代码后,我们可以看到该表在MySQL环境被丢弃。

1、回复“数据分析师”查看数据分析师系列文章

2、回复“案例”查看大数据案例系列文章

3、回复“征信”查看相关征信的系列文章

4、回复“可视化”查看可视化专题系列文章

5、回复“SPPS”查看SPSS系列文章

6、回复“答案”查看hadoop面试题题目及答案

7、回复“爱情”查看大数据与爱情的故事

8、回复“笑话”查看大数据系列笑话

9、回复“大数据1、大数据2、大数据3、大数据4”查看大数据历史机遇连载

PPV课大数据ID:ppvke123(长按可复制)

大数据人才的摇篮!专注大数据行业人才的培养。每日一课,大数据(EXCEL、SAS、SPSS、Hadoop、CDA)视频课程。大数据资讯,每日分享!数据咖—PPV课数据爱好者俱乐部!

原文始发于微信公众号(PPV课数据科学社区):【数据科学】R语言连接数据库

原创文章,作者:ppvke,如若转载,请注明出处:http://www.ppvke.com/archives/18250

联系我们

4000-51-9191

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息