如何连接到R中的Oracle数据库?

时间:2011-03-29 22:42:46

标签: oracle r

我正在尝试使用RODBC包来使用R查询来自Oracle数据库的数据。似乎有大量关于从R访问MySQL数据库的文档,但没有太多关于Oracle数据库的信息。

如何为Oracle数据库创建DSN?

4 个答案:

答案 0 :(得分:8)

以下是我为网站开发的说明:

  1. 安装Oracle即时客户端。要提取的文件是: instantclient-basic-win32-11.1.0.7.0.zip instantclient-odbc-win32-11.1.0.7.0.zip instantclient-sqlplus-win32-11.1.0.7.0.zip(可选)
  2. 注意:必须将Basic Instant Client和ODBC Instant Client软件包解压缩到同一目录中。例如,C:\ Oracle \ instantclient_11_1。

    Oracle下载站点:http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html

    1. 将解压缩文件的位置添加到路径环境变量中(例如C:\ oracle \ instantclient_11_1) 一个。右键单击桌面上的“我的电脑”,然后单击“管理”。 湾右键单击“计算机管理(本地)”,单击“属性”。 C。在高级选项卡上,单击“环境变量”下的“设置”按钮。 d。在“系统变量”下找到“路径”条目,然后单击“编辑”按钮。 即将位置路径添加到“变量值”框的末尾。请注意,项目用分号分隔。 F。单击“确定”以确认更改。关闭“计算机管理”窗口。

    2. 双击Instant客户端目录中的odbc_install.exe文件。

    3. 打开C:\ WINDOWS \ system32 \ odbcad32.exe

    4. 为oracle数据库添加数据源。 一个。单击“添加”按钮 湾选择“Instantclient11_1中的Oracle”,然后单击“完成”。 C。在“Oracle ODBC驱动程序配置”对话框中输入以下内容:         数据源名称:DSN         描述:Roacle(或其他)         TNS服务名称:服务器:1521 / DSN - 更改此项         用户ID:您的oracle用户名 d。单击“测试连接”按钮。系统将提示您输入密码,如果一切顺利,您将收到“连接成功”消息。

    5. 然后,您可以在R中创建一个频道:

           odbcConnect(dsn, uid = uid, pwd = pwd, readOnly = TRUE)
      

答案 1 :(得分:4)

我不熟悉“R”,但是:

Oracle ODBC DSN通常由 -

设置
  1. 安装instant client
  2. 使用Windows ODBC管理器创建DSN

答案 2 :(得分:1)

我发现从R连接到Oracle实际上存在一些挑战。它可能只是我们公司的实施和设置,但这是我为使其工作所做的。

library(RODBC)

ch=odbcConnect("<AliasForYourDatabase>",pwd = "xxxxxxxx", believeNRows=FALSE)

odbcGetInfo(ch)

我的关键步骤是'believeNRows=FALSE',否则在提交查询时收到以下错误:

“.Call中的错误(C_RODBCFetchRows,attr(channel,”handle_ptr“),max,buffsize ,:   不允许使用负长度矢量“

这是因为Oracle没有提供返回连接的实际行数。

答案 3 :(得分:0)

如果其他人偶然发现这个旧问题并需要帮助连接Oracle和R,则此PDF将完整地解释该过程并提供所需的下载信息。

{http://cran.fhcrc.org/web/packages/RODM/RODM.pdf}