开发者社区> 华章计算机> 正文

《数据科学:R语言实现》——2.6 从数据库中读取数据

简介:
+关注继续查看

本节书摘来自华章出版社《数据科学:R语言实现》一 书中的第2章,第2.6节,作者:R for Data Science Cookbook 丘祐玮(David Chiu),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.6 从数据库中读取数据

由于R会把数据读入内存中,因此这对于处理和分析小型数据集很合适。然而,由于企业每天积累的数据量要比个人的多得多,数据库文档在存储和分析大型数据时就变得更加常用。为了使用R访问数据库,我们可以使用RJDBC、RODBC或者RMySQL作为通信桥梁。在这一部分中,我们会介绍如何使用RJDBC连接存在数据库中的数据。
准备工作
在这一部分中,我们需要首先准备MySQL环境。如果你的机器(Windows)上有一个环境,你可以从MySQL通知器中检查服务器状态。如果本地服务器正在运行,服务器状态应该弹出localhost (Online),如图8所示。
数据库服务器在线后,我们需要验证是否获得授权,可以通过任意数据库连接客户端使用给定的用户名和密码访问数据库。例如,你可以使用MySQL命令行客户端连接数据库。
实现步骤
执行下列步骤,使用RJDBC连接R和MySQL。
1.首先,我们需要安装加载RJDBC程序包:
screenshot
screenshot

运行原理
R可以使用两大标准访问数据库,即ODBC和JDBC。JDBC(又称Java数据库连接)由一系列Java实现的类和接口组成,它们允许Java和数据库间直接通信。另外,ODBC(又称公开数据库连接)是由微软开发的标准接口。
要比较两个标准,ODBC在输入和输出数据方面性能更优;但是它也是平台依赖的。换句话说,在你的程序运行之前,你必须为不同的操作系统配置连接。相反,JDBC是平台独立的,意味着写好的程序可以在任何操作系统上运行。
要使用RJDBC连接R和MySQL,我们首先需要从CRAN安装加载RJDBC程序包。RJDBC提供了接口来连接数据库。 因为JDBC是使用Java实现的,在使用RJDBC之前,你需要安装rJava。
接着,我们从MySQL的官方下载网站下载MySQL Connector/J,它是MySQL的官方JDBC驱动。解压.zip文件(或.tar文件后),我们把文件放在合适的路径下(你可以把.jar文件添加到类路径下)。现在我们可以编写R程序来访问数据库了。
在我们的R脚本中,我们在提交任何查询请求之前,首先需要注册和初始化MySQL驱动。这里,我们需要指定驱动的类名,com.mysql.jdbc.Driver(不同的数据库有不同的类名),以及.jar文件mysqlconnector-java-5.0.8-bin.jar。我们可以在.jar文件中找到类 。接着,我们使用注册的驱动建立数据库连接。这里,我们需要提供连接字符串(jdbc:mysql://localhost:3306/finance)、用户名(root)和密码(test)来访问数据库。因为我们的MySQL服务器安装和运行在本地主机上,我们可以设计一个连接字符串"jdbc:mysql://localhost:3306/finance" 。3306是默认的MySQL端口,finance是我们的目标数据库。
连接建立以后,我们可以给数据库提交SQL请求。我们首先使用dbListTables命令列出finance数据库上的表。然后,我们创建名为majortrade的表,并使用insert语句把snp500.csv中的数据记录插入majortrade表中。然后我们使用select语句获取数据库中的数据。最后,要释放连接,我们需要使用dbDisconnect命令。
更多技能
在R中,你也可以使用RODBC和RMySQL来连接数据库。在这一部分中,我们会介绍如何通过RMySQL访问数据库。执行下面的步骤,安装加载RMySQL程序包,然后给MySQL数据库提交查询。
1.我们需要安装加载RMySQL程序包:
screenshot

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
轻量级RPC框架(0 - 项目概述)
轻量级RPC框架(0 - 项目概述)
4 0
python中的迭代对象、迭代器、生成器
在python中对于list和tuple,有很多的方式得到里面的元素,如果要输出里面的所有元素,可以采用for循环的形式,得到list或tuple中的每个元素,这就是迭代,凡是能够进行for循环的对象就是可迭代对象。 在java中的迭代方式有两种,一种直接for循环,一种采用迭代器 for循环的使用:
5 0
算法必知 --- 归并排序(优化与案例)
算法必知 --- 归并排序(优化与案例)
4 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载