试图使用RODBC将R连接到PostgreSQL时出现错误

5
我正在尝试使用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和密码测试连接时,是否会出现错误? - Harlan
我必须坦白,我是一个完全的新手,甚至不知道如何使用ODBC。你能指导我如何设置吗? - Spencer
2
ODBC需要您拥有一个PostgreSQL的ODBC驱动程序以及配置它的工具。不确定该驱动程序是否存在。OSX的ODBC管理器可以在此处找到:http://www.odbcmanager.net/,但是也许您最好使用直接绑定,例如:http://rdbi.sourceforge.net/。 - Eelke
在 Mac OS X 中,iODBC 似乎是首选的驱动程序管理器。至于一般情况下的情况:ODBC 是连接到许多数据库的桥梁之一。为了连接到例如 MySQL 数据库,它需要一个 ODBC-MySQL 驱动程序。 - isomorphismes
2个回答

2

编辑:下面的答案已经过时,因为一些提到的软件包不再在CRAN上提供。我将其保留作为参考。

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

如何在OSX 10.10.2上连接R和PostgreSQL?


要在Mac上连接到PostgreSQL,您可以使用RpgSQL软件包。请务必阅读安装说明,因为您的PostgreSQL安装必须设置为使用JDBC。这是最简单的方法。如果您安装了PostgreSQL,则可以在安装过程结束时启动Stack Builder来执行此操作(请参见安装指南)。或者,您可以在安装后使用Stack Builder(包含在postgreSQL安装中)添加额外的组件。在数据库驱动程序下,您应该会发现postgresql JDBC。

评论中提到的rdbi软件包已从CRAN中删除,而且据我所知已不再维护。

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

对于最新版本的OSX,您需要安装自己的ODBC管理器。除了评论中提到的那个之外,您还可以在此处找到来自Apple的一个:here。在此管理器中,您可以指定驱动程序位置等,并通过ODBC设置与PostgreSQL的连接。如何执行此操作取决于您使用的管理器,并在帮助文件中有说明。阅读有关iODBC FAQMac上的ODBC部分的相关部分总是很有趣的。

顺带提一下:在R中,您可以使用RODBC包的命令odbcDataSources()检查可以找到哪些DSN。如果其中没有提到Postgresql,那么您就知道需要首先检查您的设置。


看起来那里提供的软件包现在已经过时了。现在有没有更好的方法将R和PostgreSQL连接起来?我已经发布了一个详细的新问题 - http://stackoverflow.com/q/29317192/604388 - LA_
@LA_ 这确实有点过时了。谢谢您的注意,我会在答案中添加更新。 - Joris Meys

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接