특정 Xenforo 콘텐츠 마이그레이션

디스커스 커뮤니티 여러분,

구 Xenforo 데이터베이스에서 가져온 콘텐츠가 많은데, 몇 가지 사항을 제외하고 가져오려고 합니다.

최대한 스레드와 각 스레드의 첫 번째 게시물만 가져오고, 스레드 작성자를 이미 생성해 둔 다른 디스커스 포럼/사용자 계정으로 재지정하고 싶습니다. 이것이 충분히 쉬운 방식으로 가능한가요?

가져오기 스크립트의 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 문장을 보여 주실 수 있을까요? WHERE 절에 AND p.post_id = t.first_post_id를 추가해 봤는데, 문장에서 SQL 검증 오류가 발생합니다.

아, 그리고 이 가져오기 스크립트는 어디에 있나요? 이렇게 세심하게 알려주셔서 감사합니다. 정말 감사해요.

몇 시간 동안 시도해 봤지만 별다른 진전이 없었습니다. 이런 유형의 문제에 대해 Discourse에서 유료 지원을 제공하지 않나요?

Marketplace 채널에 관련 주제를 올려보시는 게 좋을 것 같습니다.

이런 오류가 발생하고 있습니다:

cannot load such file – /var/discourse/config/environment

그리고 base.rb의 16번째 줄에는 다음 내용이 있습니다:

require_relative “../../config/environment”

어떤 import/마이그레이션 튜토리얼에서도 이 파일이 존재하지 않는다는 사실에 대해 언급하지 않았습니다.