r在服务器如何输出文件,15 R输入输出 | R语言教程

15.7.4 访问Oracle数据库

Oracle是最著名的数据库服务器软件。

要访问的数据库,

可以是安装在本机上的,

也可以是安装在网络上某个服务器中的。

如果是远程访问,

需要在本机安装Oracle的客户端软件。

假设已经在本机安装了Oracle服务器软件,

并设置orcl为本机安装的Oracle数据库软件或客户端软件定义的本地或远程Oracle数据库的标识,

test和oracle是此数据库的用户名和密码,

testtab是此数据库中的一个表。

为了在R中访问Oracle数据库服务器中的数据库,

在R中需要安装ROracle包。

这是一个源代码扩展包,

需要用户自己编译安装。

在MS Windows环境下,

需要安装R软件和RTools软件包(在CRAN网站的Windows版本软件下载栏目中)。

在MS Windows命令行窗口,用如下命令编译R的ROracle扩展包:

set OCI_LIB32=D:\oracle\product\10.2.0\db_1\bin

set OCI_INC=D:\oracle\product\10.2.0\db_1\oci\include

set PATH=D:\oracle\product\10.2.0\db_1\bin;C:\Rtools\bin;C:\Rtools\gcc-4.6.3\bin;"%PATH%"

C:\R\R-3.2.0\bin\i386\rcmd INSTALL ROracle_1.2-1.tar.gz

其中的前三个set命令设置了Oracle数据库程序或客户端程序链接库、头文件和可执行程序的位置,

第三个set命令还设置了RTools编译器的路径。

这些路径需要根据实际情况修改。

这里的设置是在本机运行的Oracle 10g服务器软件的情况。

最后一个命令编译ROracle扩展包,相应的rcmd程序路径需要改成自己的安装路径。

如果服务器在远程服务器上,

设远程服务器的数据库标识名为ORCL,

本机需要安装客户端Oracle instant client软件,

此客户端软件需要与服务器同版本号,

如instantclient-basic-win32-10.2.0.5.zip,

这个软件不需要安装,

只需要解压到一个目录如 C:\instantclient_10_2中。

在本机(以MS Windows操作系统为例)中,

双击系统,选择高级–环境变量,

增加如下三个环境变量:

NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK

ORACLE_HOME = C:\instantclient_10_2

TNS_ADMIN = C:\instantclient_10_2

并在环境变量PATH的值的末尾增加Oracle客户端软件所在的目录 verb|C:\instantclient_10_2,

并与前面内容用分号分开。

然后,在client所在的目录 C:\instantclient_10_2 中增加如下内容的tnsnames.ora`文件

orcl =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102 )

(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

其中HOST的值是安装Oracle服务器的服务器的IP地址,

orcl是一个服务器实例名,

能够在服务器端的tnsnames.ora文件中查到,

等号前面的orcl是对数据库给出的客户端别名,

这里就干脆用了和服务器端的数据库标识名相同的名字orcl。

不论是在本机的数据框服务器还是在本机安装设置好客户端后,

在R中用如下的程序可以读入数据库中的表:

libraryROracle)

drv

conn

password="oracle", dbname="orcl")

rs

d

可以用dbGetTable()取出一个表并存入R数据框中。

用dbSendQuery()发出一个SQL命令,

用fetch()可以一次性取回或者分批取回,

在表行数很多时这种方法更适用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值