2016年6月18日土曜日

FileMakerからPostgreSQLにレコードを送りつける・その2

先日出たFileMaker Pro 15で、PostgreSQL(以下PSQL)のデータベースを、FileMakerで扱えるようになったということを取り上げました。
FileMakerとOracleやMySQL、PSQLといったデータベースは違う世界に生きているので、その架け橋としてODBCという通訳さんが必要というところまで話したと思います。

突然ですが、PSQLの場合は、実は通訳さんが二人必要です。
イメージとしてはこんな感じ。


ODBCに加えて、Actual ESS Adapterというものを使わないと接続できません。
ひとまず、やりたいことは以下のように、FileMakerのリレーションシップグラフに、PSQLのテーブルを追加することです。


これをやるためにインストールが必要なものをまとめてみました。
環境はWindows7(64bit版)です。

・PostgreSQL 9.4.8-1-windows-x64
→PSQLのテーブルを作らないといけないので、PSQLそのものが不可欠。

・psqlodbc_09_03_0400
→通訳その1。

・Actual ESS Adapter win64
→通訳その2。

・FileMaker Pro 15
→14以前だと無理です。

・A5:SQL Mk-2
→SQL実行環境。なくてもいいですが、PSQLのデータベースを直接操作する際に便利。

ちなみに、FileMaker以外はフリーです。

上記の環境をインストールしたら、まずODBC接続のためのアカウントのようなもの(DSNといいます)を設定します。
コントロールパネル→システムとセキュリティ→管理ツールに、データソース(ODBC)というのがありますので、ここから設定します。

PSQL-ODBCのDSNはこんな感じで。


Actual ESS AdapterのDSNはこんな感じで。


DSNの設定が終わったら、FileMakerを起動して、テーブルと、送り付けたいレコードを作りましょう。


超適当ですが、こんなもんでいいですかね。
このレコードをPSQLのほうに送りたいので、受け皿となるPSQLのテーブルも作っておきましょう。


PSQL付属のSQL実行環境が使いにくいので、A5:SQL Mk-2というフリーソフトを使っています。
テーブルを作るときのコマンド「create table」で、FileMakerで作ったテーブルと同じ形式のテーブル(sample_psql)を作っています。
selectでテーブルの形を見た結果が、下の画面に表示されています。
データは1件も入ってませんが、これから、ここにFileMakerで作ったデータが放り込まれていくわけです。

それでは、先ほどのFileMakerのファイルのリレーションシップグラフに、sample_psqlを追加してみます。
テーブルの追加→データソース:ODBCデータソースの追加→Actual ESS Adapterを選択→sample_psqlを選択→idにチェックしてOK。


斜体のテーブルが現れればOKです。
あとは、sampleテーブルからsample_psqlにレコードをインポートするだけです。


インポート先に、先ほどリレーションシップグラフに追加したPSQLのテーブルを指定します。
このスクリプトをボタンにでも仕掛けておきます。


レコードが21件あることを確認してから、ボタンを押してみます。
手ごたえはまったくないですが、SQL実行環境でselect文を唱えて、確認してみましょう。


21件、入ってました。
ボタンを押しまくるとどんどん同じデータが入っていくので、一度入れたデータは送信しないように、フラグをつけるなどしたほうがいいかもしれません。

ちなみに、別のテーブルで試してみた結果。


18000件ほどやってみました。
データ件数が多いと、インポートに少し時間がかかるくらいで、結果としては問題ないみたいです。

こんなふうに、PSQLにデータが入ってしまえば、SQLを使ってデータ分析……とかできると思います。
データ登録はFileMakerで、データ管理と分析はPSQLで、という感じでしょうか。

今回は同じPC内でのデータの受け渡しということで、実用的にはあんまり意味がないですが……
もしPSQLデータベースが別PCで、しかも地理的に離れた所にある場合でも、同じようなことができるとしたら?
たとえば、各支店のFileMakerのPOSデータを、本社のPSQLデータベースに集めて分析、みたいなこともできると思います。

終わり。