尝试使用 RODBC 将 R 连接到 PostgreSQL 时出错

Posted

技术标签:

【中文标题】尝试使用 RODBC 将 R 连接到 PostgreSQL 时出错【英文标题】:Error when trying to connect R to PostgreSQL using RODBC 【发布时间】:2011-04-27 16:59:50 【问题描述】:

我正在尝试使用 RODBC 连接到 R。但是,当我运行时

ch <- odbcConnect("rails_dev", uid="skline", pwd="d0gsleep")

我得到这个错误:

In odbcDriverConnect("DSN=rails_dev;UID=skline;PWD=d0gsleep") :
  [RODBC] ERROR: state IM002, code 0, message [iODBC][Driver Manager]Data source name not found and no default driver specified. Driver could not be loaded

有什么想法吗?我是新手,不知道下一步该做什么......提前非常感谢您!'

注意我使用的是 Mac OSX

【问题讨论】:

我假设您正在使用 ODBC 管理器来设置 ODBC 连接。使用上面指定的 uid 和密码测试连接时,是否会出现错误? 老实说,我是一个完全的新手,甚至不知道如何使用 ODBC。你能指导我如何设置它吗? ODBC 将要求您有一个用于 postgresql 的 ODBC 驱动程序以及对其进行配置的东西。不知道驱动是否存在。可以在此处找到 OSX 的 ODBC 管理器:odbcmanager.net,但也许您最好使用直接绑定,例如:rdbi.sourceforge.net iODBC 似乎是 Mac OS X 的首选驱动程序管理器。至于一般情况:ODBC 是通向 ⋲ 许多数据库的桥梁。为了连接到例如mysql db,它需要一个 ODBC-MySQL 驱动程序。 【参考方案1】:

编辑:下面的答案已经过时,因为某些提到的软件包不再在 CRAN 上可用。我把它留在这里供参考。

可以在以下问题中找到更多最新信息:

How to connect R with PostgreSQL on OSX 10.10.2?


对于 Mac 上的 PostgreSQL 连接,您可以使用包 RpgSQL。请务必阅读installation notes,因为您的 PostgreSQL 安装必须设置为使用 JDBC。这是迄今为止最简单的方法。如果您安装 PostgreSQL,您将在安装过程结束时启动 Stack Builder(请参阅installation guide)。或者,您可以在安装后使用 Stack Builder(包含在 postgreSQL 安装中)来添加额外的组件。在数据库驱动程序下,您应该找到 postgresql JDBC。

cmets 中提到的rdbi 包已从 CRAN 中删除,并且不再维护 afaik。

如果你真的需要使用 ODBC,你需要一个 PostgreSQL 驱动程序,并且它必须是你计算机上的 ODBC 实现所知道的。 Jim M. 给您的驱动程序是一种选择,另一种是Openlinksw 的驱动程序或pgFoundry 上的“官方”驱动程序。通常,您应该能够像下载 JDBC 驱动程序一样从 Stack Builder 下载 ODBC 驱动程序:在标题数据库驱动程序下,您也有一个 postgresql ODBC。

对于最新版本的 OSX,您显然需要安装自己的 odbc 管理器。在 cmets 中提到的 Eelke 旁边,还有来自 Apple 的 here。在此管理器中,您可以指定驱动程序位置等,并通过 ODBC 设置与 PostgreSQL 的连接。如何执行此操作取决于您使用的管理器,并在帮助文件中进行了说明。阅读FAQ of iODBC 中的相关部分和ODBC on Mac 上的部分总是很有趣。

附注:在 R 中,您可以使用 RODBC 包的命令 odbcDataSources() 检查可以找到哪些 DSN。如果那里没有提到 Postgresql,你知道你必须先看看你的设置。

【讨论】:

看起来那里提供的软件包现在已经过时了。现在有没有更好的方法来连接 R 和 PostgreSQL?我提出了新的详细问题 - ***.com/q/29317192/604388 @LA_ 这确实有点过时了。感谢您的关注,我会将更新添加到答案中【参考方案2】:

根据您要连接的数据库,Actual Technologies 有适用于开源数据库(MySQL、PostgreSQL)、Oracle 以及 Microsoft Access 等的 Mac OSX 驱动程序,价格约为 35 美元。无论您是想为机器上的所有用户(系统 DSN)还是为特定于用户的级别创建连接,ODBC 管理员中的设置都非常简单,因为有一个向导可以完成基本步骤。

【讨论】:

以上是关于尝试使用 RODBC 将 R 连接到 PostgreSQL 时出错的主要内容,如果未能解决你的问题,请参考以下文章

RODBC 包的替代方案,用于从 R 连接到 MS Access

在 R 中使用 RODBC 连接到 Azure SQL

使用 docker、rbase 和 RODBC 连接到 sql server 时出错

将 R 连接到 MS Access 64 位 Windows

尝试连接到 R 中的 Microsoft Access 数据库的“参数太少”

在 Mac 上从 R 连接到 Oracle