WordPress CSVエクスポートインポート、そしてデータベース構造

numbers_movieboo

WordPress、以前は編集画面が重くて使い辛かったのですが今では快適になり、普通に記事を書くだけならウェブから編集するのが断然楽です。でも時々、書いたものを後でまとめて編集する必要が出てきたりします。

WordPress管理画面からCSVの入出力

カスタムフィールドやタクソノミーなどが多く含まれてると、ちまちま編集するのが面倒で「表計算ソフトでちゃっちゃとまとめて編集できないものか」と誰しも思うでしょう。Wordpressのデータベースを弄る訓練を受けていない私のような人なら尚更です。

そこでプラグインを探してきてCSVによるWordpressの出力と入力を目指すわけですが、そのためのプラグインもあります。

エクスポート

WP All Export

wp-all-exprt

WP All Export は、エクスポートする項目を選んでセットを保存出来るタイプです。これ結構良いです。カスタムフィールドやカスタムポスト、タクソノミーにも対応していますし、書き出すパターンを保存できるのが便利。好きな項目を好きなようにセットして保存できます。IDとタイトル、カスタムフィールドひとつだけ、とかフルセットとかいろいろ自由ですし再利用も楽です。

欠点は1行目に付く項目名がwordpressのデータベースと同じじゃないので、インポートのためにすり合わせの作業が必要なことぐらいです。

WP CSV Exporter

wp-csv-exporter

WP CSV Exporter もいいと思います。1行目に付く項目名がWordpressのデータベースに準じているのでインポートの時も作業が楽です。

欠点はカスタムポストに対応するのが有料版であることくらいです。

WP All ExportとWP CSV Exporterはそれぞれ完全に一長一短、私は両方をインストールし、必要に応じて使い分けていました。

インポート

さて、エクスポートして編集するとこんどはインポートしたいわけです。インポートのプラグインもいろいろあります。

WP All Import

wp-all-importWP All Export の姉妹品、インポートの WP All Import です。WP All Exportと同じように使いやすくてよいプラグイン・・・ですが、こちらはがっつり有料オプションが必要になってきます。商売上手いですね。

Really Simple CSV Importer

really-simple-csv-importerReally Simple CSV Importer は優れものです。1行目の項目名が正しくデータベースと一致しているなら、インポートメニューから簡単にインポートできます。もしAdvanced Custom Fieldsを使用しているならそれにも対応しています。

ちょっと私には難しくて意味わかりませんでしたが、いろいろと工夫して機能を付加することも可能なようです。

残念ながらカスタムフィールドテンプレートには未対応、カスタムフィールドテンプレートで複数のバリューがあったりチェックボックスを使用したりしていると辻褄を合わせることが出来ません。

カスタムタクソノミーは安全に利用できます。

私の話で恐縮ですが、カスタムフィールドを多用していました。しかしReally Simple CSV Importerでは利用できないため「そうだ。カスタムフィールドをやめて全部タクソノミーに変更してやれ」とろくでもないことを思いつき、やってしまいました。しかも中途半端に。

これが後々仇になります。いずれこの話の顛末を書くかもしれませんがここでは「CSV入出力において、カスタムフィールドは使い辛く使用をやめたくなる。逆にカスタムタクソノミーは編集も楽で便利に使える」ということだけ踏まえて頂ければ。

さて、CSVで出力しているからローカルでの変更は一瞬で完了します。よしよし上手くいったと喜んでいたのですが、まとめてインポートしようとして罠に嵌まりました。

CSVインポートの罠

エクスポートしたファイルを表計算ソフトでまとめて編集、しかる後に快適アップロードでウハウハ。と、思っていました。しかし大きな罠がありました。という話です。

エラーでインポートできない

WordPressの「ツール」から「csvインポート」を選んで、ファイルを選んで、喜んでアップロードします。

しかしエラーが出ました。サーバーエラーみたいなエラーです。何度やってもエラー。どんなときにやってもエラー。まったくインポートできません。果てこれは。もしやこれは。もしかしてこれは。

行が多すぎて処理不能

そうです。処理する行数が多すぎて処理できなかったのです(6千行くらいありました)これは盲点、でも考えてみたら当たり前なのか。どうなのでしょう。とにかく、編集し終えたCSVファイルが大きすぎてまったく処理できないということを理解しました。

ここまでで説明をすっ飛ばしていますが、「表計算ソフト」とわざわざ書いてるのはエクセルだと文字コードがどうたらこうたらと面倒なことがちょっとあるそうなので。エクセルをお使いの場合は文字コードに注意してください。それと、書き出すときにセルの「数字」と「文字」にも注意が必要です。基本、文字にしないといけないのではなかったでしたっけ。そっちの情報は Really Simple CSV Importer に関する検索で見つけていただければと思います。

行数を減らしてテスト

そこで、ローカルのCSVファイルを少ない行数で書き出して別ファイルにして、それを読み込んでいました。しかし少ない行数とは何行なのか。さあわかりません。試しに1000に減らしてみました。

エラー出ました。

次に500行に減らしました。エラーで続行不可能。

次に100行に減らしました。

列の少ないデータではやっとこさインポートできました。

「100行以内ならOKなのか」と安心して、別のファイルで試してみると、エラーで続行不可でした。

70行、50行、20行、いろいろ試した結果、内容がシンプルなら100行程度、カスタムタクソノミーがたくさんあったりカスタムフィールドがたくさんあるようなフルデータだと50行でもエラーになる時があるとわかりました。

何たる非力。

50行や100行程度に収めたファイルに分割してインポートし続けるなど、そんな面倒臭いことは到底できません。そもそも簡単に大量の編集を行うためのCSVエクスポートインポートだった筈、余計ややこしくしてどないするんじゃ。と、なんだか意気消沈してしまいました。

ごく簡単なちょっとした内容の100行程度のファイルだとCSV入出力の価値があります。しかし肝心のメタ情報たっぷりのフルサイズ編集にはまったく力不足で使い物にならないと、やっと学習しました。

これはもちろんサーバーの能力にもよると思います。共用レンタルサーバーでちまちまやっている私のような人は大量のCSVインポートなんか共用の他の方に迷惑が掛かるだけでそもそも無茶なのかもしれません。普通のインポートだと順序よくエラーもなく取り込めるのにCSVインポートではダメというのは、プラグインがいろいろ複雑な工程を踏んでいるので仕方ないのだろうなあと。

データベースと直接やりとりする

そんなわけで数日間CSVと格闘しましたが、結局自分の望んでいるようなことが出来ないと確認できただけでした。

しかしそこでふと考えがよぎります。

myadmin

サーバーを引っ越しするときなど、データベースからエクスポートしてインポートするではないか。そのときは数万行のデータであっても特に問題なくあっという間に出来るではないか。

そうですね、データベースを直接触る分には数千行などたかだかしれいていますね。Wordpressの管理画面から行うというのは、Wordpressとデータベースの複雑怪奇なやりとりをかましますからとても複雑な作業となってしまいメモリやサーバー性能を喰らい尽くすのですね。多分そうですよね?

データベースからCSVエクスポートインポート

myadminにログインして早速テストします。怖いのでもちろんテストサイトを使いました。myadminにログインしてテーブルを選んでエクスポートしてみます。このとき、なんと便利なことにcsvエクスポートも選べます。エクセル形式っていうのも選べます。

容易く出来ました。ちょっとローカルで弄ったあと、インポートも出来ました。弄る内容はともかくとして、データベースから直接エクスポートして直接インポートすると大量データであっても問題なく操作できることが確認できました。

データベース構造

なーんだ、最初からこうすればよかっただけじゃん。と一瞬間抜けにもそう思います。しかしそんな簡単な話でもありません。

WordPressデータベースの仕組み

編集画面から簡単にタクソノミーやカスタムフィールドを作ったり切ったり貼ったりしますが、生のデータはそうはいきません。仕組みというものがあります。IDを元にタクソノミーを関連づけたり、ポストメタとポストを関連づけたりしています。何か編集しよう、触って弄ってポンというわけにはいきません。

そこで、生まれて初めてWordpressのデータベースの構造というものに注意を向けてみることにしました。構造が一目でわかる便利なページが用意されています。なぜ今までこのようなページを見たことがなかったのだろうと呆れますがとにかく見てみます。

WordPress Codex データベース構造

これがそうですね。詳しい説明はCodexページに書いてあります。

割とシンプル。もっと複雑怪奇なものを空想していました。ポスト、タクソノミー、ポストメタについて「なるほど知恵の産物やな」と納得。

というこの図をたらたら眺めて、ようやくwordpressデータベースの基本的な構造がわかりました。今まで知らんかったんかいっ。と自分ツッコミを入れながら、こういう図はどこかでよく見かけた図だなと感じます。

すぐに思い出します。昔よく見たファイルメーカーのリレーション図です。あら懐かしい。ファイルメーカー、クラリスの頃ファイルメーカーProになってすぐに買って使い倒していたあのFileMaker Pro、データベースソフトのあれです。

fm12app

そりゃ、データベース仲間なんだから似ていて当たり前の話です。なるほどなるほどと感心しながら、次に良からぬ考えが浮かびます。

 

CSVをFileMakerで管理したらどうじゃろか。

WordPress管理画面からCSVをエクスポートすると、タクソノミーやポストメタがリレーションの仕上がった状態でダウンロードできます。それをインポートしようとすると複雑怪奇な処理が行われますからサーバーエラーとなります。

データベースからテーブルごとにCSVをエクスポートしてFileMakerにインポートし、正しくリレーションを再現して管理、編集することによって、FileMakerからテーブルごとにCSVを書き出すことができ、それをMyadminからインポートすればエラーも出ずに大量のデータを変更できるのではないか。と思いついたわけです。

まずそんな風に思いました。「まず」というのは、この先いろいろあったからですが、今はまだその段階ではなくCSVにこだわっております。

テーブルごとにエクスポートしたデータをFileMakerのテーブルごとにインポート、リレーションを組んでいきWordpress構造をローカルで再現する、という遊びも何だか楽しそうに思えて、すでにいろいろ本末転倒していますがわくわくし始めている段階です。

ということでこの後はまた話が長くなるので次回に繋げます。

つづく


WordPressとFileMaker 関連記事

コメントを残す