在脚本中从FileMaker Pro数据库提取数据的最佳方法?
我的工作会变得更简单,或者至少不那么繁琐,如果我能找到一种自动化的方法(最好是用Python脚本)来从FileMaker Pro数据库中提取有用的信息。我是在Linux机器上工作,而FileMaker数据库在同一个局域网内的OS X机器上。我可以从我的机器登录到它的网页界面。
我对SQL还算熟悉,如果有人能告诉我一个可以让FileMaker用SQL访问数据的插件,我会非常高兴。我找到的资料大多是反向的:让FileMaker从SQL数据源获取数据。这对我来说没什么用。
虽然这不是我的首选,但如果有Perl的解决方案,我会考虑用Perl而不是Python。
注意:一些人提到的XML/XSLT服务只在FM Server上可用,而不是FM Pro。否则,那可能是最好的解决方案。ODBC的设置非常困难,几乎没有任何反馈。当你设置它时,FM完全不提供任何信息,所以你得去翻看/var/log/system.log,解析那些晦涩的错误信息。
结论:我通过在本地机器上运行一个Python脚本来解决这个问题,这个脚本通过ODBC连接查询FM数据库。这个脚本实际上是一个TCP服务器,接受来自局域网其他系统的连接,执行查询,并通过socket连接返回数据。我必须这样做,因为FM Pro只接受本地的ODBC连接(外部连接需要FM Server)。
3 个回答
如果你对Python感兴趣,可能会想看看Filemaker的Python封装。这种封装可以让你通过Filemaker自带的XML服务,双向访问Filemaker的数据。你可以在下面的链接找到一些很详细的信息:
你需要FileMaker Pro的安装光盘来获取驱动程序。这份文档详细说明了FMP 9的相关过程,7.x和8.x版本也差不多。6.x及更早的版本就完全不同了,我建议你不要尝试(那些旧版本的xDBC支持基本上是“极少”的)。
FMP 9支持SQL-92标准的语法(大部分情况下)。需要注意的是,你不是直接查询表,而是使用“表出现”的名称,这就像是表的别名。如果数据表存储在多个文件中,可以创建一个单独的FMP文件,其中的表出现/别名指向那些数据表。有一个“未记录的特性”,就是这样的文件必须在里面定义一个表,并且这个表要和关系图上的其他表“相关联”(哪一个都无所谓),这样ODBC访问才能正常工作。否则你的查询总是会返回没有结果。
这份PDF文档详细列出了使用FMP提供的xDBC接口的所有限制。简单查询的性能还算不错,具体情况可能会有所不同。我发现使用“LIKE”操作符的查询性能就不太理想。
FMP还有一个XML/XSLT接口,你可以通过HTTP连接来查询FMP数据。它还提供了一个PHP类,用于在网页应用中访问和使用FMP数据。
我很久没有用过FileMaker Pro了,但我知道它可以通过ODBC(和JDBC)进行连接。不过,我不太清楚这在Linux、Perl或Python环境下是怎么回事。
这篇文章介绍了如何通过ODBC和JDBC来共享或暴露你的FileMaker数据:
通过ODBC或JDBC共享FileMaker Pro数据
如果你能建立ODBC/JDBC连接,就可以根据需要查询数据。