首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何安装RODBC,以便使用unixODBC?

如何安装RODBC,以便使用unixODBC?
EN

Stack Overflow用户
提问于 2017-11-02 14:16:38
回答 3查看 1.2K关注 0票数 1

在安装和配置FreeTDS和unixODBC并确认它们是否正确工作之后,我正在尝试配置RODBC。但是,在试图查看R控制台中的ODBC数据源时,我将获得以下结果。

代码语言:javascript
复制
> odbcDataSources()
named character(0)

如果我尝试使用FreeTDS驱动程序,就会得到以下结果。

代码语言:javascript
复制
>odbcDriverConnect("driver={FreeTDS};server=xx.xx.xx.xx;port=1433;database=XXXX_Analysis;trusted_connection=true;UID=********;PWD=********") :
[RODBC] ERROR: state IM003, code 0, message [iODBC][Driver Manager]Specified driver could not be loaded

基于错误,RODBC似乎正在尝试使用iODBC而不是unixODBC。我不知道如何配置RODBC来使用unixODBC。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-15 16:05:00

正确的方法是为包的配置脚本指定odbc管理器,如下所示

代码语言:javascript
复制
install.packages("RODBC", 
 type = "source", 
 INSTALL_opts="--configure-args='--with-odbc-manager=odbc'"
)

--with-odbc-manager=odbc表示要使用unixODBC

--with-odbc-manager=iodbc表示要使用iODBC

票数 2
EN

Stack Overflow用户

发布于 2018-03-26 22:14:34

在MacOS10.13.3 High上配置unixODBC之后,我也遇到了这个问题。我尝试配置我的.Renviron来为ODBCINI设置一个特定于R的环境变量,但是RODBC仍然不列出我的数据源名称(DSNs)。此外,我无法找到ODBCinst.ini中指定的驱动程序,甚至无法获得一个使用RODBC::ODBCDriverConnect()的连接字符串,尽管它能够与isql连接。

到头来工作的只是:

代码语言:javascript
复制
remove.packages('RODBC')
install.packages('RODBC', type="source") 

如果您从mac上的源代码安装RODBC,它似乎正确地选择了odbc.ini文件和odbcinst.ini文件。

感谢这篇文章对解锁密钥的微妙评论:http://eriqande.github.io/2014/12/19/setting-up-rodbc.html

票数 1
EN

Stack Overflow用户

发布于 2017-11-02 14:16:38

结果显示,默认的RODBC包安装将不适用于unixODBC。下面是重新编译和安装RODBC的过程。

  1. 通过R控制台删除当前的通用RODBC包.从‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library’中删除包(未指定为‘lib’)
  2. 下载RODBC的源代码。 1.3-15.tar.gz
  3. 将环境变量DYLD_LIBRARY_PATH设置为unixODBC库所在的位置。我使用自制语言安装unixODBC,所以我的库位于/usr/local/lib.export DYLD_LIBRARY_PATH=/usr/local/lib中。
  4. 现在重新安装RODB,以获取新的库位置。R CMD INSTALL /Users/xxxxxx/Downloads/RODBC_1.3-15.tar.gz

有相当多的输出,但看看最后,你应该看到这样的东西。

代码语言:javascript
复制
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o RODBC.so RODBC.o -lodbc -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
    installing to /Library/Frameworks/R.framework/Versions/3.4/Resources/library/RODBC/libs
    ** R
    ** inst
    ** preparing package for lazy loading
    ** help
    *** installing help indices
    ** building package indices
    ** installing vignettes
    ** testing if installed package can be loaded
    * DONE (RODBC)

注意,指向库位置的-L/usr/local/lib被选中。

现在,您应该能够看到unixODBC提供的。回到重新启动的R控制台中,您可以键入以下命令来验证RODBC是否使用unixODBC。

代码语言:javascript
复制
> library("RODBC")
> odbcDataSources()
      MYMSSQL1        MYMSSQL XXXXXXXXX_C_DB  XXXXXXXX-SQL1 
     "FreeTDS"      "FreeTDS"      "FreeTDS"      "FreeTDS" 

感谢帮助我走上正轨。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47077493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档