我正在尝试使用RODBC包来使用R查询来自Oracle数据库的数据。似乎有大量关于从R访问MySQL数据库的文档,但没有太多关于Oracle数据库的信息。
如何为Oracle数据库创建DSN?
答案 0 :(得分:8)
以下是我为网站开发的说明:
注意:必须将Basic Instant Client和ODBC Instant Client软件包解压缩到同一目录中。例如,C:\ Oracle \ instantclient_11_1。
Oracle下载站点:http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
将解压缩文件的位置添加到路径环境变量中(例如C:\ oracle \ instantclient_11_1) 一个。右键单击桌面上的“我的电脑”,然后单击“管理”。 湾右键单击“计算机管理(本地)”,单击“属性”。 C。在高级选项卡上,单击“环境变量”下的“设置”按钮。 d。在“系统变量”下找到“路径”条目,然后单击“编辑”按钮。 即将位置路径添加到“变量值”框的末尾。请注意,项目用分号分隔。 F。单击“确定”以确认更改。关闭“计算机管理”窗口。
双击Instant客户端目录中的odbc_install.exe文件。
打开C:\ WINDOWS \ system32 \ odbcad32.exe
为oracle数据库添加数据源。 一个。单击“添加”按钮 湾选择“Instantclient11_1中的Oracle”,然后单击“完成”。 C。在“Oracle ODBC驱动程序配置”对话框中输入以下内容: 数据源名称:DSN 描述:Roacle(或其他) TNS服务名称:服务器:1521 / DSN - 更改此项 用户ID:您的oracle用户名 d。单击“测试连接”按钮。系统将提示您输入密码,如果一切顺利,您将收到“连接成功”消息。
然后,您可以在R中创建一个频道:
odbcConnect(dsn, uid = uid, pwd = pwd, readOnly = TRUE)
答案 1 :(得分:4)
答案 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}