Discourse コミュニティの皆様
古い xenForo データベースから多くのコンテンツをインポートしたいのですが、いくつか避けたいことがあります。
理想的には、スレッドとそのスレッドの最初の投稿のみをインポートしたいです。また、スレッドの開始者を、すでに作成した別の Discourse フォーラム/ユーザー アカウントに再割り当てしたいです。これは比較的簡単に可能でしょうか?
Discourse コミュニティの皆様
古い xenForo データベースから多くのコンテンツをインポートしたいのですが、いくつか避けたいことがあります。
理想的には、スレッドとそのスレッドの最初の投稿のみをインポートしたいです。また、スレッドの開始者を、すでに作成した別の Discourse フォーラム/ユーザー アカウントに再割り当てしたいです。これは比較的簡単に可能でしょうか?
インポートスクリプトのSQLを変更するだけです
SELECT p.post_id id,
t.thread_id topic_id,
#{@prefix_as_category ? "t.prefix_id" : "t.node_id"} category_id,
t.title title,
t.first_post_id first_post_id,
t.view_count,
p.user_id user_id,
p.message raw,
p.post_date created_at
FROM #{TABLE_PREFIX}post p,
#{TABLE_PREFIX}thread t
WHERE p.thread_id = t.thread_id
AND p.message_state = 'visible'
AND t.discussion_state = 'visible'
ORDER BY p.post_date
LIMIT #{BATCH_SIZE}" # OFFSETが必要
WHERE句にAND p.post_id = t.first_post_idを追加してください
変更する
mapped[:user_id] = user_id_from_imported_user_id(m["user_id"]) || -1
に
mapped[:user_id] = xxx
ここでxxxは、トピックを割り当てたいDiscourseユーザーIDです。
@RGJ 早速のご返信ありがとうございます。修正したSQLステートメントを教えていただけますでしょうか。AND p.post_id = t.first_post_id をWHERE句に含めようとしましたが、SQLの構文エラーが発生してしまいます。
あ、それと、このインポートスクリプトはどこにあるのでしょうか?!親切に教えていただき感謝します。
おそらく Marketplace にトピックを作成できるでしょう。
エラーが発生しています。
cannot load such file -- /var/discourse/config/environment
そして、base.rb の 16 行目に以下があります。
require_relative "../../config/environment"
インポート/マイグレーションのチュートリアルのどこにも、これが存在しないことについては言及されていません。