在安装和配置FreeTDS和unixODBC并确认它们是否正确工作之后,我正在尝试配置RODBC。但是,在试图查看R控制台中的ODBC数据源时,我将获得以下结果。
> odbcDataSources()
named character(0)如果我尝试使用FreeTDS驱动程序,就会得到以下结果。
>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。
发布于 2019-11-15 16:05:00
正确的方法是为包的配置脚本指定odbc管理器,如下所示
install.packages("RODBC",
type = "source",
INSTALL_opts="--configure-args='--with-odbc-manager=odbc'"
)--with-odbc-manager=odbc表示要使用unixODBC
--with-odbc-manager=iodbc表示要使用iODBC
发布于 2018-03-26 22:14:34
在MacOS10.13.3 High上配置unixODBC之后,我也遇到了这个问题。我尝试配置我的.Renviron来为ODBCINI设置一个特定于R的环境变量,但是RODBC仍然不列出我的数据源名称(DSNs)。此外,我无法找到ODBCinst.ini中指定的驱动程序,甚至无法获得一个使用RODBC::ODBCDriverConnect()的连接字符串,尽管它能够与isql连接。
到头来工作的只是:
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
发布于 2017-11-02 14:16:38
结果显示,默认的RODBC包安装将不适用于unixODBC。下面是重新编译和安装RODBC的过程。
export DYLD_LIBRARY_PATH=/usr/local/lib中。R CMD INSTALL /Users/xxxxxx/Downloads/RODBC_1.3-15.tar.gz有相当多的输出,但看看最后,你应该看到这样的东西。
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。
> library("RODBC")
> odbcDataSources()
MYMSSQL1 MYMSSQL XXXXXXXXX_C_DB XXXXXXXX-SQL1
"FreeTDS" "FreeTDS" "FreeTDS" "FreeTDS" 感谢门帮助我走上正轨。
https://stackoverflow.com/questions/47077493
复制相似问题