XOOPSからDrupalへ移行したときのメモ

このエントリーをはてなブックマークに追加
投稿者:chikunai 投稿日時:2010-05-08(土) 18:04

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用です。

  1. SELECT blog_id, blog_id, blog, title, 1, created, created, 2, 1, 0, 0, 0 FROM xoops_weblog

こっちはnode_revision用です。

  1. SELECT blog_id, blog_id, title, contents, contents, '---UnderThisSeparatorIsLatterHalf--- ', created, 1, 1 FROM xoops_weblog

2.編集

次に、エクスポートされたファイルを開いて編集してください。

・CREATE TABLEはいらないので削除

・INSERT INTO 文の最初の一行を、実際のテーブルにあわせます。

これじゃ、xoops_weblogにデータを入れてしまうので

  1. INSERT INTO `xoops_weblog` (`blog_id`, `blog_id`, `blog`, `title`, `1`, `created`, `created`, `2`, `1`, `0`, `0`, `0`) VALUES

node用に切り替えます。

  1. 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 の値に入れてください。

  1. UPDATE sequences SET id = 100 WHERE name = 'node_nid';
  2. 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にしてください。

  1. INSERT INTO term_data (tid, vid, name, weight) VALUES
  2. (1, '1', 'IT・インターネット', '0'),
  3. (2, '1', '通信販売・EC', '0'),
  4. (3, '1', 'モバイル・携帯電話', '0'),
  5. (4, '1', 'クレジットカード', '0');

term_nodeテーブルは、カテゴリと記事を結びつけます。

以下SQLで、エクスポートしてください。

  1. SELECT blog_id, cat_id FROM weblog_category

エクスポートしたファイルは、修正してください。

  1. INSERT INTO term_node (nid, tid) VALUES

修正したエクスポートファイルをインポートしてください。

最後にシーケンスを修正します。

  1. UPDATE sequences SET id = 5 WHERE name = 'term_data_tid';

これで移行できます。

Drupal6 からは、採番にオートナンバーを使用してるようです。Drupal6へ移行する際は、sequences テーブルの更新を省く手順になると思います。




コメント(0)

新しいコメントの投稿

このフィールドの内容は非公開にされ、公表されることはありません。
  • 使用できるHTMLタグ: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <table> <tr> <th> <td>
  • 行と段落は自動的に折り返されます。
  • You can use BBCode tags in the text. URLs will automatically be converted to links.
  • 次のタグを使用してソースコード構文をハイライトすることができます。: <code>, <blockcode> The supported tag styles are: <foo>, [foo].
  • You may insert videos with [video:URL]
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。

書式オプションに関するより詳しい情報...

CAPTCHA
この問題はユーザが人間であるかどうかをテストし、スパムによる自動投稿を防ぐためのものです。
Image CAPTCHA
Enter the characters shown in the image.
Drupal theme by Kiwi Themes.