macOS Catalina 上的 RODBC

RODBC on macOS Catalina

我无法让 RODBC 在 macOS Catalina 上运行。我正在尝试连接到 MS SQL 服务器。我已经使用 Homebrew 安装了 unixODBC,并从 here 安装了 Microsoft ODBC 驱动程序。 RODBC 安装很好,我按照其他地方的建议使用它安装它:

install.packages('RODBC', type="source", configure.args='--with-odbc-include=/usr/local/lib' )

但是当我运行这个:

RODBC::odbcDriverConnect(connection = "driver={ODBC Driver 17 for SQL Server};server=XYZ;database=XYZ;UID=XYZ;PWD=XYZ")

它挂起——我必须取消命令,然后我收到一堆警告,如下所示:

[RODBC] ERROR: state IM003, code 0, message [iODBC][Driver Manager]Specified driver could not be loaded

我知道 SQL 服务器驱动程序已安装,因为在 R 中使用 ODBC 包是有效的——使用相同的驱动程序!但出于某种原因,RODBC 使用的是 iODBC,而且显然是在错误的地方寻找驱动程序。

我正在尝试编写可以在不同平台上 运行 的代码,并且我已经在 Ubuntu 和 Windows 上成功地使用了 RODBC。但是我很难弄清楚如何让 RODBC 在我的 MacBook 上工作。

一些升级后,我在 Mac 上连接 Impala 时遇到了同样的问题。解决方法是确保 RODBC 使用 unixodbc 而不是 iODBC,如下所示:

  • 安装 unixodbc。我用的是 brew.
  • 使用 remove.packages("RODBC")
  • 删除 RODBC
  • 从源重新安装 RODBC 并指定 unixodbc 库的路径并包含 和 install.packages("RODBC", type = "source", configure.args = c("--with-odbc-include=/usr/local/include/","--with- odbc-lib=/usr/local/lib/") )

在我的电脑上,unixodbc 在 /usr/local