PCにリストアしたWordPressのDBから記事一覧を作成してみた

ローカルPCにリストアしたWordpressのデータベースに、AccessでODBC接続して記事一覧を作成します。記事のタイトルと本文の文字数も、Accessのユーザー関数を作成してHTMLのタグ抜きで算出しています。

大まかな流れは次の通りです。

  1. エックスサーバーのバックアップ機能でMySQLのダンプを取得。
  2. 取得したダンプをローカルのMariaDBにリストア。
  3. ODBCで接続してAccessにリンクテーブルを作成。
  4. HTMLタグを削除する関数とクエリを作成。
  5. クエリ結果を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にリンクテーブルを作成します。

ODBC経由でデータベースに接続
リンクテーブルを作成

ユーザー定義関数の実装

正規表現のライブラリを追加します。

正規表現のライブラリを追加

標準モジュールに次の関数を登録します。

● 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

エクスポート操作を保存しておきます。

エクスポート操作の保存画面

保存したエクスポート操作は、保存済みのエクスポート操作から呼び出せます。

登録した操作の実行画面

エクスポート結果(Excel)

実際に作成したクエリでエクスポート結果です。

エクスポートデータ

数記事を比較したところ、Cocoonの文字数表示と、タイトル及び本文とも一致していました。

題字数と本文字数

本文の字数の分布をグラフで表してみました。

本文字数の分布グラフ

おわりに

もっとデータベースの構造が分かれば、AccessやExcelでもいろいろ便利なツールが作成できそうです。

今回はローカルにリストアしたデータベースを利用しました。

最後までご覧いただきありがとうございます。
では、また。

コメント

コメントする

目次