<div data-theme-toc="true"> </div>
Discourse への phpBB 3.x フォーラムの移行に際し、データのクリーニングと準備のためにいくつかの手順を実行しました。これは、他のユーザーが移行の準備をするのに役立つように、私が実行していることを概説したものです。多くの提案はデータを削除するため、以下の提案を実行する前に必ずデータベースのバックアップを取得してください。
古いトピックと投稿を削除する。
カテゴリを確認し、すべてのトピックを移行する必要があるかどうかを判断してください。すべてのデータが必要ですか、それとも過去数年間のトピックで十分ですか?phpBB は、経過日数に基づいてトピックを自動的に削除します。phpBB ACP でフォーラムの削除日を設定/調整できます。フォーラムに移動し、変更したいフォーラムの歯車ウィジェットを選択します。
古いユーザー名を削除する。
Discourse インポーターは、投稿していないユーザーを移行しません。これを理解した上で、投稿したことのない古いユーザーを削除できます。phpBB ACP で「ユーザーとグループ」を選択します。ユーザーを削除するオプションがあります。投稿数を 0 に設定し、最終アクティブ日を設定できます。これにより、投稿したことのないユーザーや、しばらくフォーラムでアクティブでなかったすべてのユーザーを削除できます。
匿名ユーザーの投稿数を決定する。
Discourse 移行では、匿名ユーザーは停止されたユーザーとして移行されるか、すべてシステムユーザーに移行されます。匿名ユーザーに帰属するトピック/投稿の数を確認してください。
MySQL は匿名ユーザーの user_id を決定します。ほとんどのインストールでは、user_id = 1 です。
SELECT `user_id`, `username` FROM `phpbb_users` where `username_clean` = "anonymous"
トピックと投稿を確認するには。システムのアノニマスユーザー ID でクエリを更新してください。
SELECT * FROM `phpbb_posts` where `poster_id` = "1"
SELECT * FROM `phpbb_topics` where `topic_poster` = "1"
これらの結果に基づいて、匿名ユーザーの投稿とトピックを処理するようにシステムを構成する方法を決定する必要があります。私の場合は少数だったので、削除しました。
非表示またはソフト削除された投稿を確認する。
これは phpBB 3.1 で実装された機能です。非表示またはソフト削除された投稿があるかどうかを確認してください。Discourse はこのフィールドを無視して投稿をインポートします。投稿は、ユーザー/モデレーターによって何らかの理由で削除されました。
SELECT * FROM `phpbb_posts` where `poster_visibility` = "2"
リストされている投稿を削除してください。
クリーンなメールアドレスを確認する。
以下の MySQL スクリプトを実行して、メールアドレスに末尾のスペースがないことを確認し、特定されたメールの問題を削除してください。
SELECT `user_email` FROM `phpbb_users` where CHAR_LENGTH(`user_email`) != CHAR_LENGTH(TRIM(`user_email`)) ORDER BY `user_id` ASC
重複タイトルの確認。
Discourse 設定には、重複タイトルを許可するフラグがあります。次のクエリは、多くの重複タイトルがあるかどうかを理解するのに役立ちます。私のフォーラムには 1,000 を超える重複タイトルのトピックがあったため、重複トピックタイトルを許可するようにフラグを更新しました。
SELECT `topic_title`, COUNT(*) as count FROM `phpbb_topics` GROUP BY `topic_title` HAVING COUNT(*) > 1 ORDER BY `count` DESC
孤立したトピックを見つける。
すべてのトピックには投稿があるはずですが、時々問題が発生します。これは、投稿のないすべてのトピックを一覧表示します。
SELECT * FROM `phpbb_topics` WHERE `topic_id` NOT IN (Select topic_id from phpbb_posts) ORDER BY `topic_approved` DESC
孤立したトピックをクリーンアップしてください。
孤立した投稿を見つける。
すべての投稿はトピックに属している必要があります。これは、有効な topic_id がない投稿を一覧表示します。
SELECT * FROM `phpbb_posts` WHERE `topic_id` NOT IN (Select topic_id from phpbb_topics) ORDER BY `post_id` DESC
孤立した投稿をクリーンアップしてください。
最初のトピック投稿が有効な投稿であることを確認する。
トピックの最初の投稿が削除されると、topic_first_post_id が無効なトピックになる可能性があります。これは、topic_first_post_id が有効であることを検証します。
SELECT * FROM `phpbb_topics` WHERE `topic_first_post_id` NOT IN (Select post_id from phpbb_posts) ORDER BY `topic_approved` DESC
最初のトピック投稿 ID をクリーンアップしてください。
移行の準備を進める中で、追加項目が見つかり次第追加します。推奨されるチェックがあれば、以下に追加してください。