XOOPSからDrupalへ移行したときのメモ
XOOPS Cube 2.0系からDrupal5へ移行したときのメモです。
エンジニア向けです。
基本はXOOPS Import モジュールでOK。
XOOPS Importで一つ問題があります。Weblogモジュールを使っている人は、データが移行されないので工夫が必要です。
といっても方法は一つ、データベースMySQLに直接データを入れます。
Drupalのコンテンツは、node テーブルと node_revisions テーブルにデータを入れれば表示されます。nodeテーブルは、タイトルとかを入れておく場所。node_revisionsテーブルは、本文やティーザー(見出し)を入れておく場所です。
だいぶ昔なので、あってるかな(汗
0.準備
あらかじめBlogモジュールを有効にしてください。ページ、ブログ、ストーリーなど、一切作らないでください。
BBcodeモジュールを入れ、入力書式画面のFiltered HTMLでBBcodeを有効にしてください。
1.エクスポート
phpMyAdminで以下のようにSQL文を使ってweblogテーブルのデータを「エクスポート」してください。エクスポートの形式はSQLです。
こっちはnode用です。
- SELECT blog_id, blog_id, blog, title, 1, created, created, 2, 1, 0, 0, 0 FROM xoops_weblog
こっちはnode_revision用です。
- SELECT blog_id, blog_id, title, contents, contents, '---UnderThisSeparatorIsLatterHalf--- ', created, 1, 1 FROM xoops_weblog
2.編集
次に、エクスポートされたファイルを開いて編集してください。
・CREATE TABLEはいらないので削除
・INSERT INTO 文の最初の一行を、実際のテーブルにあわせます。
これじゃ、xoops_weblogにデータを入れてしまうので
- INSERT INTO `xoops_weblog` (`blog_id`, `blog_id`, `blog`, `title`, `1`, `created`, `created`, `2`, `1`, `0`, `0`, `0`) VALUES
node用に切り替えます。
- INSERT INTO `node` (nid, vid, type, title, uid, status, created, changed, comment, promote, moderate, sticky) VALUES
ただし、node_revisionsテーブルのエクスポートファイルだけ、メモ帳の置換機能を使って編集してください。
「---UnderThisSeparatorIsLatterHalf---」がDrupalでは使えないので、何も無い「」に置き換えてください。
これでエクスポートファイルの編集が終了。
3.インポート
INSERTする前に1点だけ問題があります。タイトルの長さが、Drupalは短いです。記事のタイトルが空になりますので、後で手作業で直してあげてください。
編集したエクスポートファイルをインポートしてください。
インポート後、エラーが出ませんでしたか?
これでページが見れるはずです。
ただしこれだけだと、新しいきじが作成できません。
4.IDの編集
sequencesテーブルにID情報を格納しています。
nodeのnid列でもっとも高い値を node_nid の値に入れてください。
node_revisionsのvid列でもっとも高い値を node_revisions_vid の値に入れてください。
- UPDATE sequences SET id = 100 WHERE name = 'node_nid';
- UPDATE sequences SET id = 100 WHERE name = 'node_revisions_vid';
5.カテゴリ
term_dateテーブルとterm_nodeテーブルにデータを入れます。
管理画面→カテゴリ→ボキャブラリの追加で、ブログ用のカテゴリを作ってください。そのIDが「1」とします。
term_dateテーブルは、カテゴリのマスタです。XOOPSのweblog_categoryテーブルです。
term_dateテーブルのtidは、weblog_categoryテーブルのcat_idにしてください。
- INSERT INTO term_data (tid, vid, name, weight) VALUES
- (1, '1', 'IT・インターネット', '0'),
- (2, '1', '通信販売・EC', '0'),
- (3, '1', 'モバイル・携帯電話', '0'),
- (4, '1', 'クレジットカード', '0');
term_nodeテーブルは、カテゴリと記事を結びつけます。
以下SQLで、エクスポートしてください。
- SELECT blog_id, cat_id FROM weblog_category
エクスポートしたファイルは、修正してください。
- INSERT INTO term_node (nid, tid) VALUES
修正したエクスポートファイルをインポートしてください。
最後にシーケンスを修正します。
- UPDATE sequences SET id = 5 WHERE name = 'term_data_tid';
これで移行できます。
Drupal6 からは、採番にオートナンバーを使用してるようです。Drupal6へ移行する際は、sequences テーブルの更新を省く手順になると思います。

コメント(0)
新しいコメントの投稿