在 Mac 上将 R 连接到 Filemaker Pro 15

Connect R to Filemaker Pro 15 on Mac

我正在尝试使用 RStudio (1.0.143) 在 R (3.3.3) 和 Filemaker Pro Advanced 15 (15.0.3.305) 之间建立连接。我正在尝试使用 RODBC (1.3-15) 创建连接。

到目前为止我:

Created a toy FM Pro database for testing

Followed these instructions for creating a DSN

为名为 test_r

的玩具 FM Pro 数据库创建了一个 DSN

已成功测试与 test_r

的连接

尝试通过以下两种方式连接RStudio中的DSN失败:

fm_connection <- odbcConnect(dsn="test_r", uid="Admin", pwd="password")

其中returns出现以下错误:

[RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specifiedODBC connection failed

constr <- paste("driver={FileMaker ODBC}",
               "server=127.0.0.1",
               "database=test_r",
               "uid=Admin",
               "pwd=password",
               sep=";")

fm_connection <- odbcDriverConnect(constr)

其中returns出现以下错误:

[RODBC] ERROR: state 01000, code 0, message [unixODBC][Driver Manager]Can't open lib 'FileMaker ODBC' : file not foundODBC connection failed

不过可以看到驱动在:

最后,我尝试使用这些(和其他)参考资料来解决此问题,但没有成功:

  1. https://cran.r-project.org/web/packages/RODBC/vignettes/RODBC.pdf
  2. https://community.filemaker.com/thread/165849

到目前为止似乎没有任何效果。我与 RODBC 无关,但我确实需要一个适用于 Mac OS 的解决方案。感谢您的帮助!

以下是 MacOS 的一些重要故障排除步骤。我在 R 中遇到了同样的错误,因此我认为这很有可能是您的问题。 ODBC 的设置可能相当复杂,因为涉及多个具有多个版本的软件组件。您已验证此特定 FileMaker 数据库中的 ODBC 共享已启用。

验证您的 unixodbc 安装:

ODBC 管理器实际上是可选的。它管理下面描述的 ini 文件。但是安装unixodbc后,你也可以在没有ODBC管理器的情况下在文本编辑器中编辑这些ini文件。

要安装 Homebrew,请执行此命令。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后,安装unixodbc。这提供了系统级别的 ODBC 连接。

酿造更新 brew 安装 unixodbc

验证驱动程序:

驱动应该安装在这里:

/Library/ODBC/FileMaker\ ODBC.bundle/Contents/MacOS 

该文件夹将包含这两个文件:

SetupToolTemplate   fmodbc.so

这是完整的驱动程序路径:

/Library/ODBC/FileMaker\ ODBC.bundle/Contents/MacOS/fmodbc.so

验证配置文件:

文件夹

/Library/ODBC

应该包含这些文件:

FileMaker ODBC.bundle   odbc.ini        odbcinst.ini

此外,unixodbc 应该只包含最新版本。如果您有较早的版本,请将其删除。现在,只有 2.3.4 存在。

/usr/local/Cellar/unixodbc/2.3.4

还包含

odbc.ini        odbcinst.ini

镜像 odbc.ini 和 odbcinst.ini 文件:

如上所述,这些文件中的每一个在两个不同的位置都有两个副本。确保两者的内容相等。这意味着 odbcinst.ini 的两个副本都将定义驱动程序。 odbc.ini 的两个副本都将包含连接。也许这不是 100% 必要的,但这是我需要做的。

用isql测试:

B:etc bobby$ isql -v DSNname admin password
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

如果您在完成这些步骤后仍有任何问题,请分享更多详细信息,以便我更新答案。

我使用 odbc 而不是 RODBC 来让它工作一些新的 R 代码:

con <- DBI::dbConnect(odbc::odbc(),
                      driver = "/Library/ODBC/FileMaker ODBC.bundle/Contents/MacOS/FileMaker ODBC",
                      server = "127.0.0.1",
                      database = "/Users/bradcannell/Dropbox/Filemaker Pro/Notes/test_r.fmp12",
                      uid = "Admin",
                      pwd = "password")