在 Mac 上从 R 连接到 Oracle
Posted
技术标签:
【中文标题】在 Mac 上从 R 连接到 Oracle【英文标题】:Connecting to Oracle from R on a Mac 【发布时间】:2014-09-18 15:08:36 【问题描述】:我一直在尝试从 R 设置到 Oracle 数据库的连接。在 Windows 和 Linux 上运行良好,但似乎无法在 Mac 上运行。这是另一篇文章,我没有运气就按照说明进行操作。我更喜欢使用 RODBC 包,但可以使用 ROracle(我无法工作)。我尝试了Oracle Instant Client 和Actual Technologies 驱动程序。任何帮助将不胜感激。
Installing ROracle on Mac OS X - what is needed from Oracle?
使用 Active Technologies 驱动程序,我已经设置并成功测试了来自 ODBC 管理器的连接,但 odbcDataSources()
没有返回我定义的任何连接。
由于编译错误,ROracle 无法安装:
ld: library not found for -lclntsh
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [ROracle.so] Error 1
ERROR: compilation failed for package ‘ROracle’
* removing ‘/Library/Frameworks/R.framework/Versions/3.1/Resources/library/ROracle’
当您解压缩文件时,即时客户端似乎没有将文件放在正确的目录中。以下是我组织文件的方式:
bin/adrci
bin/genezi
bin/sqlplus
bin/uidrvci
lib/libclntsh.dylib.11.1
lib/libnnz11.dylib
lib/libocci.dylib.11.1
lib/libociei.dylib
lib/libocijdbc11.dylib
lib/sqlplus.dylib
lib/sqlplusic.dylib
lib/odbc5.jar
lib/odbc6.jar
lib/xstream.jar
sdk/ - All the files from that ZIP file
我还必须创建一个 rdbms/public 目录。我把所有的头文件 (.h) 都放在了这个过程中。
【问题讨论】:
找出一条信息,odbcDataSources()
函数从/usr/local/etc/odbc.ini
文件中读取连接。 ODBC 管理器将此文件保存到/Library/ODBC/odbc.ini
复制允许我查看可用的数据源。连接似乎有效,执行查询需要一段时间,但没有返回任何行。数据框的结构是正确的。
我可能会提供帮助,因为我的 Mac(Mavericks)上同时运行了 RODBC 和 ROracle。你有任何进展吗?您使用的是哪个 OS X 版本?
我最终说出了我所拥有的智慧here。也许这会有所帮助。
您是否尝试过安装 MSODBC 驱动程序? /usr/bin/ruby -e "$(curl -fsSL raw.githubusercontent.com/Homebrew/install/master/install)" brew tap microsoft/mssql-release github.com/Microsoft/homebrew-mssql-release brew update brew install --no-sandbox msodbcsql mssql-tools
【参考方案1】:
也许iODBC 可以完成这项工作,您可以查看this,尤其是文档的Install
部分。
This page 也可以帮助您设置 iODBC。
如果此方法不起作用,您也可以尝试使用rstudio。
【讨论】:
【参考方案2】:我已经有一段时间没有在 Mac 上工作了......
用 ROracle 解决您的编译问题的有根据的猜测:
做export LD_LIBRARY_PATH=<instantclientlocation>/lib
这有帮助吗?
【讨论】:
【参考方案3】:我可以帮助您使用 ROracle。以下是使其工作的步骤:
-
安装 Oracle Instant Client(并重新启动以防万一)
为您的数据库获取 Oracle R 分发版 (http://www.oracle.com/technetwork/database/database-technologies/r/r-distribution/downloads/index.html) 并记下分发版本。在我的示例中,我使用最新的,目前是 1.5.1
一些注意事项:
R 几乎是一个便携式应用程序。如果您将它与 Rstudio 一起使用,您可以轻松地在 OracleR 和 R 的另一个发行版之间从 RStudio 设置切换。
如果您的环境变量中碰巧有多个发行版,请确保在继续之前使用的是 Oracle R。
-
从此处下载并安装适用于您的 Oracle R 版本(我们之前提到过)的 CLIENT 和 SUPPORTING ROracle 软件包:http://www.oracle.com/technetwork/database/database-technologies/r/r-enterprise/downloads/index.html
版本有一些细节,所以这里是我工作安装的代码:
install.packages(".\\packages\\client\\ORE_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\client\\OREbase_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\client\\OREcommon_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\client\\OREdm_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\client\\OREeda_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\client\\OREembed_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\client\\OREgraphics_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\client\\OREmodels_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\client\\OREpredict_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\client\\OREstats_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\client\\ORExml_1.5.1.zip",repos=NULL)
install.packages(".\\packages\\supporting\\arules_1.5-0.zip",repos=NULL)
install.packages(".\\packages\\supporting\\Cairo_1.5-9.zip",repos=NULL)
install.packages(".\\packages\\supporting\\DBI_0.6-1.zip",repos=NULL)
install.packages(".\\packages\\supporting\\png_0.1-7.zip",repos=NULL)
install.packages(".\\packages\\supporting\\randomForest_4.6-12.zip",repos=NULL)
install.packages(".\\packages\\supporting\\ROracle_1.3-1.zip",repos=NULL)
install.packages(".\\packages\\supporting\\statmod_1.4.29.zip",repos=NULL)
require(DBI)
require(OREdm)
require(ORE)
require(ROracle)
ore.connect(user = "...", sid = "...", host = "...", password = "...")
ore.is.connected() #to test the connection
4。此时您应该能够收到来自服务器的响应。如果无法连接,有两件事要做:
-
确定服务器是否识别连接(如果没有,那么我想您应该使用 SERVER Oracle R 文件设置服务器。不过,我还没有这样做,也不能说如何去做。)@987654323 @
确定服务器是否识别并拒绝连接(然后你应该检查你的
ore.connect()
参数
【讨论】:
以上是关于在 Mac 上从 R 连接到 Oracle的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Windows 上从 Python 连接到 MSSQL Server
在 Linux 上从 .NET Core 连接到 Informix
通过 R 连接到 AWS Redshift - Mac OSX