ローカルPCにリストアしたWordpressのデータベースに、AccessでODBC接続して記事一覧を作成します。記事のタイトルと本文の文字数も、Accessのユーザー関数を作成してHTMLのタグ抜きで算出しています。
大まかな流れは次の通りです。
- エックスサーバーのバックアップ機能でMySQLのダンプを取得。
- 取得したダンプをローカルのMariaDBにリストア。
- ODBCで接続してAccessにリンクテーブルを作成。
- HTMLタグを削除する関数とクエリを作成。
- クエリ結果をExcelに出力して操作を保存。
DBのバックアップとリストア
DBのバックアップ
エックスサーバーにはMySQLのバックアップ機能があります。この機能を利用して、Wordpressのデータベースのバックアップファイル(ダンプファイル)を取得します。
バックアップのリストア
ダンプファイルを、MySQL又はMariaDBにデータベースを作成してリストアします。
今回は、Bitnami Redmine Stack for Windows をインストールした際、一緒にインストールされた「MariaDB」に、新たにデータベースを作成してリストアしました。
● データベースの作成
mysql > create database untitled_wpdb;
● ダンプのリストア
mysql -u root -p --database untitled_wpdb < d:¥untitled_wpdb.sql
Accessへの実装
リンクテーブルの作成
ODBC経由でデータベースに接続して、Accessにリンクテーブルを作成します。
ユーザー定義関数の実装
正規表現のライブラリを追加します。
標準モジュールに次の関数を登録します。
● HTMLタグを削除するユーザー定義関数
Public Function cdataConv(str As String) As String Dim regEx As New RegExp regEx.Pattern = "<[^>]*>" regEx.Global = True cdataConv = regEx.Replace(str, "") End Function
クエリの作成
次のようなクエリを作成します。
「本文字数」カラムには次のように入力します。
本文字数: Len(cdataconv([post_content]))
SQL全文は次の通りです。
● SQL全文
SELECT CLng([wp_posts].[ID]) AS ID, wp_posts.post_title, wp_posts.post_status, wp_posts.post_name, wp_term_taxonomy.taxonomy, wp_terms.name, wp_terms.slug, Len([post_title]) AS 題字数, Len(cdataconv([post_content])) AS 本文字数, wp_posts.post_date, wp_posts.post_modified FROM ((wp_posts LEFT JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id) LEFT JOIN wp_term_taxonomy ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) LEFT JOIN wp_terms ON wp_term_taxonomy.term_id = wp_terms.term_id WHERE (((wp_posts.post_status)="publish") AND ((wp_term_taxonomy.taxonomy)="category")) ORDER BY wp_posts.post_date DESC;
エクスポートと操作の保存
クエリの右クリックからエクスポートを実行します。
エクスポート操作を保存しておきます。
保存したエクスポート操作は、保存済みのエクスポート操作から呼び出せます。
エクスポート結果(Excel)
実際に作成したクエリでエクスポート結果です。
数記事を比較したところ、Cocoonの文字数表示と、タイトル及び本文とも一致していました。
本文の字数の分布をグラフで表してみました。
おわりに
もっとデータベースの構造が分かれば、AccessやExcelでもいろいろ便利なツールが作成できそうです。
今回はローカルにリストアしたデータベースを利用しました。
最後までご覧いただきありがとうございます。
では、また。
コメント