2008-08-26 9 views
8

Mein Job wäre einfacher oder zumindest weniger mühsam, wenn ich einen automatischen Weg (vorzugsweise in einem Python-Skript) finden könnte, um nützliche Informationen aus einer FileMaker Pro-Datenbank zu extrahieren. Ich arbeite an einem Linux-Rechner und die FileMaker-Datenbank befindet sich im selben LAN, der auf einem OS X-Rechner läuft. Ich kann mich von meinem Rechner aus in die Webby-Oberfläche einloggen.Die beste Methode zum Extrahieren von Daten aus einer FileMaker Pro-Datenbank in einem Skript?

Ich bin ziemlich praktisch mit SQL, und wenn jemand mich auf ein FileMaker-Plug-in verweisen könnte, das mir SQL-Zugriff auf die Daten innerhalb von FileMaker geben könnte, würde ich mich freuen, wie Punsch. Alles, was ich gefunden habe, geht nur in die andere Richtung: Mit FileMaker Daten aus SQL-Quellen holen. Nicht nützlich.

Es ist nicht meine erste Wahl, aber ich würde Perl anstelle von Python verwenden, wenn eine Perl-y-Lösung zur Hand wäre.

Hinweis: XML/XSLT-Dienste (wie von einigen Leuten vorgeschlagen) sind nur auf FM-Server, nicht FM Pro verfügbar. Sonst wäre das wahrscheinlich die beste Lösung. ODBC erweist sich als extrem schwierig, überhaupt zu arbeiten. Es gibt absolut keine Rückmeldung von FM, wenn Sie es einrichten, also müssen Sie durch /var/log/system.log graben und obskure Fehlermeldungen parsen.

Fazit: Ich habe es funktioniert, indem Sie ein Python-Skript lokal auf der Maschine, die die FM-Datenbank über die ODBC-Verbindungen abfragt. Das Skript ist eigentlich ein TCPServer, der Socket-Verbindungen von anderen Systemen im LAN akzeptiert, die Abfragen ausführt und die Daten über die Socket-Verbindung zurückgibt. Ich musste dies tun, um die Tatsache zu umgehen, dass FM Pro nur ODBC-Verbindungen lokal akzeptiert (FM-Server ist für externe Verbindungen erforderlich).

Antwort

5

Es war ein wirklich lange Zeit seit ich irgendetwas mit FileMaker Pro getan habe, aber ich weiß, dass es Fähigkeiten für eine ODBC (und JDBC) Verbindung zu ihm gemacht hat (weiß ich jedoch nicht wie, oder wenn, das übersetzt in die Linux/Perl/Python Welt obwohl).

Dieser Artikel zeigt, wie zu teilen/Setzen Sie Ihre Filemaker-Daten über ODBC & JDBC:
Sharing FileMaker Pro data via ODBC or JDBC

Von dort aus, wenn Sie in der Lage sind, eine ODBC/JDBC-Verbindung erstellen Sie Daten abfragen aus nach Bedarf könnten.

3

Sie benötigen die FileMaker Pro-Installations-CD, um die Treiber zu erhalten. This document erläutert den Prozess für FMP 9 - es ist ähnlich für die Versionen 7.x und 8.x. Versionen 6.x und früher sind völlig unterschiedlich und ich würde es nicht versuchen (xDBC-Unterstützung in diesen früheren Versionen ist bestenfalls "minimal").

FMP 9 unterstützt die SQL-92 Standardsyntax (meistens). Beachten Sie, dass Sie die Tabellen nicht direkt abfragen, sondern den Namen "Tabellenvorkommen" verwenden, der als Tabellenalias für Sortierungen dient. Wenn die Datentabellen in mehreren Dateien gespeichert sind, kann eine einzelne FMP-Datei mit Tabellenvorkommen/-aliasnamen erstellt werden, die auf diese Datentabellen verweisen. Es gibt eine "undokumentierte Funktion", bei der eine solche Datei ebenfalls eine Tabelle definieren muss und diese Tabelle mit jeder anderen Tabelle im Beziehungsdiagramm (egal welche) für den ODBC-Zugriff "verwandt" ist. Andernfalls geben Ihre Abfragen immer keine Ergebnisse zurück.

Das PDF-Dokument beschreibt alle Einschränkungen der Verwendung der xDBC-Schnittstelle, die FMP bietet. Die Leistung von einfachen Abfragen ist ziemlich schnell, ymmv. Ich habe festgestellt, dass die Leistung von Abfragen, die den "LIKE" -Operator angeben, weniger als stellar ist.

FMP verfügt auch über eine XML/XSLT-Schnittstelle, mit der Sie FMP-Daten über eine HTTP-Verbindung abfragen können.Es bietet auch eine PHP-Klasse für den Zugriff auf und die Verwendung von FMP-Daten in Webanwendungen.

2

Wenn Sie an Python angelehnt sind, könnten Sie sich für den Python-Wrapper für Filemaker interessieren. Es bietet einen Zwei-Wege-Zugriff auf die Filemaker-Daten über die integrierten XML-Dienste von Filemaker. Sie können einige ziemlich gründliche Informationen dazu finden unter:

http://code.google.com/p/pyfilemaker/