数値型のカスタムフィールドを追加するプラグイン(その2)

昨日に続いて、数値型のカスタムフィールドを追加するプラグインについてお話しします。
今日は、既存のテキスト型のデータを数値型に変換する方法を解説します。

1.データのバックアップ

テキストから数値への変換は、phpMyAdmin等を使って、SQLを直接に実行する形で行います。
多くのデータが影響を受けますので、万が一の事態に備えて、ブログのデータを必ずバックアップしておいてください。
また、バックアップから正しく復元できることも、確認しておいてください。

2.SQLに必要な情報のチェック

SQLを実行する前に、以下の4つの情報をメモしておいてください。

  • ブログのID
  • 変換元のテキスト型フィールドのベースネーム
  • 変換先の数値型フィールドのベースネーム
  • 変換先の数値型フィールドの数値の型(整数/浮動小数点数)

3.SQLの実行

次に、phpMyAdmin等を使って、SQLを実行します。
まず以下のようなSQLを実行します。

delete mt_entry_meta.*
from mt_entry_meta, mt_entry, mt_blog
where entry_meta_entry_id = entry_id
and entry_blog_id = blog_id
and blog_id = ブログのID
and entry_meta_type = 'field.変換先の数値型フィールドのベースネーム'

次に、以下のSQLを実行します。
「数値の型」のところには、整数型なら「vinteger」、浮動小数点型なら「vfloat」を入れます。

update mt_entry_meta, mt_entry, mt_blog
set entry_meta_type = 'field.変換先の数値型フィールドのベースネーム',
entry_meta_数値の型_idx = entry_meta_vchar_idx,
entry_meta_vchar_idx = null
where entry_meta_entry_id = entry_id
and entry_blog_id = blog_id
and blog_id = ブログのID
and entry_meta_type = 'field.変換元のテキスト型フィールドのベースネーム'

例えば、以下のような変換を行いたいとします。

項目
ブログのID1
変換元のテキスト型フィールドのベースネームtext1
変換先の数値型フィールドのベースネームnumber1
変換先の数値型フィールドの数値の型整数(vinteger)

この場合、以下の順でSQLを実行します。

delete mt_entry_meta.*
from mt_entry_meta, mt_entry, mt_blog
where entry_meta_entry_id = entry_id
and entry_blog_id = blog_id
and blog_id = 1
and entry_meta_type = 'field.number1'
update mt_entry_meta, mt_entry, mt_blog
set entry_meta_type = 'field.number1',
entry_meta_vinteger_idx = entry_meta_vchar_idx,
entry_meta_vchar_idx = null
where entry_meta_entry_id = entry_id
and entry_blog_id = blog_id
and blog_id = 1
and entry_meta_type = 'field.text1'

4.ベースネーム/テンプレートタグ名の変更

次に、変換元のテキスト型のフィールドを削除します。
そして、変換先の数値型のフィールドで、ベースネームとテンプレートタグ名を、変換元のテキスト型のベースネーム/テンプレートタグ名に変更します。