我正在尝试重新编译RODBC包,以便我可以从OS X 10.10.3上的R连接到MS SQL Server。我正在尝试修改我在here找到的说明,但我不确定应该将$ DYLD_LIBRARY_PATH=
指向哪个(我已经尝试了/Library/ODBC/
和/Library/ODBC/Actual SQL Server.bundle/Contents/MacOS/
但是在任何一种情况下都无法连接到数据库)。有人做过这个吗?此外,一旦重新编译,我应该使用odbcconnect
还是odbcdriverconnect
?我使用odbcconnect
命令在同一台机器上使用来自Windows VM的R成功连接/执行了查询。提前致谢!
答案 0 :(得分:0)
我想有人可以报告我发布的内容是"而不是答案"但我想我在18个月前的R-SIG-Mac邮件列表档案中发现了一些可能有用或可能没用的资料。它确实专门解决了作者认为二进制文件应该位于何处的问题。发表评论的时间太长了:
From: Marc Schwartz <marc_schwartz@me.com>
Subject: Re: [R-SIG-Mac] RODBC not connecting from my Mac
Date: October 30, 2013 8:35:24 AM PDT
To: r-sig-mac@r-project.org R <r-sig-mac@r-project.org>
&#34;大家好,
我想跟进这个帖子,因为我上面提供的信息并不完整,正如我现在通过与Ripley教授的对话所知,通过在Apple开发者论坛和电子邮件交换中搜索在线找到的信息与实际技术&#39; (AT)技术支持。
从OS X 10.6(Snow Leopard)开始,Apple从默认的操作系统安装中删除了ODBC管理员GUI应用程序,如上所述。苹果版本已经并且仍可从Apple.com单独下载,AT人员开始支持和发布更新版本的ODBC Manager,正如我所指出的那样。
然而,事实证明,这只是故事的一部分。
从OS X 10.8(Mountain Lion)开始,Apple开始弃用对iODBC的直接支持。在SDK树中10.8上的XCode中包含的iODBC的头文件显然已经显示出这一点,但在其他任何地方都没有公开记录,包括XCode发行说明。 iODBC的二进制dylib文件仍然存在于10.8的/ usr / lib中,因此如果你想在10.8上使用OS X的RODBC二进制文件,则没有问题。除非手动设置配置文件,否则您仍需要ODBC管理员/管理器GUI来设置DSN配置。
没有具体说明原因,但苹果公司代表在苹果开发论坛上的 2012 8月份的条目表明苹果公司已做出决定参与弃用OS X上iODBC的默认安装。此回复是另一位注意到头文件内容的用户,该内容表明了这一点,并发布了一个查询。 Apple代表建议用户开始考虑前往iODBC.org获取可用的OS X二进制文件或者源代码。或者,用户应考虑转移到其他ODBC工具(如unixODBC)或使用本机(非ODBC)驱动程序来处理感兴趣的数据源。
凭借10.9(Mavericks),Apple现已完全从默认的OS X安装中删除了iODBC。在最新版本的XCode中,iODBC的二进制dylib文件存在于SDK树中10.9,但是头文件已被删除,导致需要从源构建依赖于iODBC的应用程序的人员出现问题。但有迹象表明,在未来的某个时刻,甚至iODBC dylib二进制文件也将从XCode发行版中删除。至少近期,可以将dylib文件从10.9中的SDK树复制/移动到/ usr / lib,或者只是符号链接到它们,但当然这意味着只为此目的安装XCode,如果你没有其他需要为了它。
上周我从10.8升级到10.9后,使用RODBC二进制文件和AT驱动程序访问我们的Oracle服务器没有任何问题。因此,我没有初步的基础认为10.9有什么不对。
然而,我当时并不知道的是,AT最近更新了他们的ODBC驱动程序安装包以包含iODBC二进制文件,特别是因为Apple之前的iODBC弃用决定。如果它们不在安装AT驱动程序的系统上(例如10.9),则AT安装包中的iODBC二进制文件将安装在/ usr / lib中以使AT驱动程序能够运行。这对AT很重要,因为它们的驱动程序被编译为使用iODBC而不是unixODBC。上周更新到10.9之后,我巧妙地更新了MacBook Pro上的AT驱动程序安装,这使我对10.6的iODBC支持的看法有所偏差。
因此,正如Mikkel在原帖中指出的那样,人们需要知道iODBC已经从OS X 10.9中完全删除。
正如Apple代表在Dev Forums的回复中指出的那样,如果您希望在OS X上继续使用带有ODBC驱动程序的iODBC,则选项包括直接进入iODBC.org。如果您选择购买并使用AT ODBC驱动程序正如我为Oracle所做的那样,iODBC二进制文件现在将安装在您的系统上,如果不存在的话。 AT安装包还包括ODBC管理器GUI。
替代方案当然是按照Mikkel的做法转移到unixODBC,小心你选择使用的任何ODBC驱动程序是兼容的。如果您选择沿着这条路走下去,正如我在上面的回复中所说,您需要从源代码编译RODBC包,因为默认情况下它是针对iODBC库编译的OS X.
感谢Ripley教授的沟通以及AT支持人员对当前情况及其社区支持的澄清。
此致
Marc Schwartz&#34;
答案 1 :(得分:0)
因为:a)OP要求我澄清我的评论,b)这个评论发布时间太长,c)将来可能对某人有帮助,我发布这个作为答案,即使这不是关于RODBC本身的
这是我在OS X上从R连接到SQL Server的方法。您可以从Microsoft获取jar
library(RJDBC)
# jar location
classPath <- 'YOUR_DIR/sqljdbc_4.0/enu/sqljdbc4.jar'
stopifnot(file.exists(classPath))
# init driver
drv <- JDBC(driverClass='com.microsoft.sqlserver.jdbc.SQLServerDriver',
classPath=classPath)
# connect to db (replace YOUR_DB, user, pword as needed, obviously!)
conn <- dbConnect(drv, "jdbc:sqlserver://YOUR_DB", user, pword)
# now you are ready to run your version of sql_statement
results <- dbGetQuery(conn, sql_statement)
我的sessionInfo()
电话的相关位:
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RJDBC_0.2-4 rJava_0.9-6 DBI_0.3.1