前回の記事で「FILEMAKER と MYSQL の接続 は次のポストにつづきます」と書いたので続きを書こうとしましたが、その前の段階のことをもう少し補足的に書きとどめておくことにしました。少し遡り、FileMaker でどのような編集方法を編み出したか、そして編集したデータを WordPress に戻してやる作業についてです。
これまでのあらすじ
WordPress のデータが入ってる SQL のテーブルを CSVでエクスポートし、それを FileMaker Pro にインポート、FileMaker でリレーションを組んで簡易的に WordPress のリレーションを再現しました。
前回の記事: インポートした WordPress の CSV を FileMaker Pro でリレーション
FileMaker で創意工夫
FileMaker の創意工夫についてですが、ちょっとその前にエクスポートの話と繋がる話があるんです。
というのも、編集後のデータを WordPress に戻すときにですね、どう戻すのかによって FileMaker の創意工夫が変わってくるからです。
CSV で書き出し、CSVでインポートする
前回さらりと「編集したデータをSQLにインポートするのは難易度高すぎて諦めました」というようなことを書きましたが、SQLにインポートするのを諦め、難易度の低い方法を行っていました。
つまり、FileMaker で編集した結果を CSV でエクスポートして、普通に WordPress からCSVインポートするということです。
シリーズのこの記事「WordPress CSVエクスポートインポート、そしてデータベース構造」に書いたような、ちょっと面倒だけどプラグインを使ったCSVのインポートです。
この中でCSVインポートでは行数が多いとエラーが出ると書きました。分割して小さなファイルにするのが面倒だからデータベースと直接やりとりしようとしたんですね。
でも結局この面倒な方法に戻っていました。ただし FileMaker を介していますから CSV の分割エクスポートはずいぶん楽になったし、なにより編集作業そのものが効率化したので無駄ではなかったかなと思います。
そんなわけで、SQLにインポートするならテーブルごとにSQLに形式で、CSVでインポートするならCSVの形式で書き出しますから、FileMakerの設計が随分変わってきます。
FileMaker でこんなふうにやってました
前回の記事では SQL からテーブルをダウンロードしてFileMakerでリレーション組みました。
さらに独自にテーブルをいくつか用意しました。とりわけ重要だったのが、CSVに準じたフィールドを持つテーブルです。
CSVに準じたフィールドを持つテーブル
WordPress から CSV エクスポートを行ったときに生成される形式ですね。SQL のテーブルみたいなのじゃなくて、もうリレーションも出来上がっていて普通のWordpress編集画面でお馴染みの形式に近いものです。
準備として、CSV に準じたローカルのテーブルには WordPress を再現するためCSVエクスポートしたデータをすべて流し込みます。こうすることで、SQLから持ってきたデータテーブルとローカルのCSVっぽいデータテーブルを繋げるときに抜けがなくなりますね。
このローカルCSVテーブルと、SQL のリレーションされたテーブルを上手く繋げてやります。フィールド名だけではリレーションに不便なのでローカルCSVテーブルのフィールドには独自にローカル ID をセットします。この独自ローカル ID と、もともと SQL データが持っている各種 ID をリレーションします。
間を取り持つ Bridge
ローカル ID と SQL データの ID の間を取り持つブリッジの役割を果たすテーブルも追加しています。このブリッジのテーブルにはポストと紐付いたタクソノミーやカスタムフィールドがIDとセットにすべて格納されるようにしました。
CSV で書き出すためのテーブル
そして最終的にCSVで書き出すためのテーブルも用意しました。
スクリプトやボタンを駆使して、一撃でCSV出力ができるという、しかも用途に応じて書き出す項目なんかも複数用意出来るやつです。
このような創意工夫をやっていたわけです。言葉で書くとややこしいけど、このような概念です。
最終的には SQL 直接接続に変更したのでこの力作は没になりましたが。でももう少しCSV出力について詳しく書きますね。
FileMaker からCSVで書き出す
編集を施した FileMaker のデータを WordPress にインポートできる形に整形して出力してやらねばなりません。
テーブルごとにSQL 形式で書き出せればいいんですがそれは諦めているので、WordPress で読み込める CSV 形式で書き出します。
行数が多すぎるとエラーがでるので小さなファイルに分割して WordPress から CSV インポートします。
CSV で書き出す専用のテーブルに書き出し用フィールドを作る
FileMaker で書き出し専用のテーブルを作り、思い通りの CSV エクスポートができるフィールドを作ります。
何を以てして思い通りの CSV かというと、WordPress に CSV インポートするためのプラグインにもよります。使用する CSV インポートのプラグインに合わせた形をきっちり作れるようにします。
で、出力専用テーブルに編集したデータをどんどんコピーしていきます。
機械的な作業ですので、スクリプトを書きまくりボタンを設置しまくり、知恵と工夫を重ねていろんな用途に使える CSV 書き出しの仕組みを作るのがよいでしょう。私はボタンポンで一気にCSV書き出しのフィールドが埋まるという大変便利なものができましたよ。
インポートするための CSV 整形
CSV インポートのプラグインにもよりますが、CSV を作るにあたっては基本的なルールがありますね。
1行目にフィールド名
1行目は適切なフィールド名をつけてやらねばなりません。たとえば投稿のタイトルは「post_title」スラッグは「post_name」IDは「ID」または「post_id」とかですね、そういうのがあります。プラグインの仕様やSQLのテーブルを見れば間違わないだろうと思います。
書き出し用テーブルのフィールド名はすべてそのルールに則った形式で作っておけばいいでしょう。
数字を文字列に
数字や日付のフォーマットはNGで、多分ぜんぶ文字として書かないといけないと思います。データベース内部では数字でもCSVのインポートの時は文字列である必要があるんです(多分、そうだたったですよね)
FileMaker の書き出しテーブル内でそのような変換を行ってもいいし、面倒なら CSV で書き出した後表計算ソフトで変換してもいいと思います。実際には書き出した CSV を表計算で開いてセルを全部選択して文字列に変換するのが楽で早かったように思います。
小出しに分割
あと重要なのは CSV ファイル容量というか行数です。以前書いたとおり、行数が多いとエラーで進みません。ここは面倒でも数十行に収める必要があります。
CSVを分割する作業も FileMaker から制御すると楽かもしれません。スクリプトを組むのが面倒なら表計算ソフトを使って分割しても構わないですが、分割して1行目をくっつけてファイル名を付けて保存しまくるというのは随分手間ですね。
書き出した CSV を WordPress にインポート
こうして書き出した CSV は Really Simple CSV Importer などのプラグインを利用して WordPress にインポートします。
Really Simple CSV Importer のインポートで気をつけるのはカスタムフィールドです。
もしカスタムフィールドテンプレートを使用していてチェックボックスだの複数入力だのを実装していたら上手くいきません。Advanced Custom Fields をご利用なら対応しているようです。しかしいずれにしろ、カスタムフィールドの扱いはちょっと難しいものとなります。
これがあって「ならカスタムフィールドなんか使うのやめて全部タクソノミーにしてやれ」なんて思ったんですが、これが後々ちょっとした騒動になります。それはまたいずれ。
どこが間違っているか
前回の予告に反して少し話を戻して今回の記事を書きました。ここまでで一つの区切りとなりますが、これまでの流れをまとめるとこうなります。
WordPress のデータを SQL から持ってきた → FileMaker に読み込んで編集しやすいファイルを作った → CSV で書き出した → WordPressに読み込んだ
これだけ見ると「うん。上手くいったね」となります。しかしそうではないのです。最初から振り返ると、何が間違っているか一目瞭然となります。
そもそもなぜこのようなことを始めたのか。そこから振り返ります。
- WordPress の編集をダッシュボードからじゃなく手元で一括で行いたい
- CSVで書き出して表計算でさくっと編集してみた
- 編集した CSV を WordPress に読み込むのが面倒。他に方法はないのか
- SQLからテーブルをダウンロードしてFileMakerで編集しちゃえ
- 編集できたけどそれを SQL に戻す術が難しくてあきらめた
- CSV形式に変換する仕組みを作って出力した
- 普通に WordPress に CSV を読み込んだ
「3. 編集した CSV を WordPress に読み込むのが面倒」これが発端なのに
「6. CSV形式に変換して普通に WordPress に読み込んだ」こんなことやってます。
しかも 3. で面倒だったことの1000倍くらい面倒な 4〜6 をやっていたのです!本末転倒にもほどがあります。アホか、おれ!
という自分の阿呆さに呆れかえっていますと、天の一角がぺろりとめくれて神様が顔を出し読者に向かってこう言いました。
「しかし SQL データテーブルの仕組みを知り FileMaker のスクリプトの作り方も学んだペンテロ君が次のステップに気づくのは時間の問題なのです」
ひとしきり馬鹿馬鹿しさにうなだれているとき、FileMaker の画面をぼんやり見ながら思い出したのが前回の記事で書いた SQL への直接の接続です。
ここで前回の記事の最後のほうに繋がります。ですのでちょっと時をかけてそこからやりなおしますね。
FILEMAKER と MYSQL の接続
早速検索してみると、いきなりFileMaker社のページがヒットします。
外部 SQL データソースの概要
FileMaker Pro は、SQL データソースにライブ接続することができます。
外部SQLデータソースとの接続 | FileMaker
なんと、そんなことができるのか。これが出来るんならこれでええやん。と、るんるん気分でSQL接続の方法を検索して辿ります。多少ややこしくてもSQLのコマンド覚えるより楽に違いない。るんるん。
というわけで、FILEMAKER と MYSQL の接続 は次のポストにつづきます。
※ 「CSVでFileMakerとの連携」というシリーズ、ここまでで一旦区切り、次の記事からは「FileMakerでWP MySQL接続」というシリーズ記事になります。
次の記事は FileMaker Pro を MySQL サーバーに接続する その1 です。