CSV 파일에서 사용자 및 주제를 가져온 경험이 있으신가요?

이전 플랫폼에서 중단된 시도로 인해 (82)명의 사용자와 (13)개의 게시물을 가져오고 싶습니다. 규모는 작지만, 복사 및 붙여넣기를 하기에는 부담스러운 수준입니다. 일단 CSV 가져오기 스크립트를 사용해 볼 계획입니다. Ruby 스크립트를 다루는 것은 처음입니다.

discourse/script/import_scripts/csv_importer.rb at main · discourse/discourse · GitHub 에 맞춰 CSV 파일을 준비했습니다.

하지만 제가 무언가를 놓치고 있는 게 아니라면, CSV 가져오기 스크립트가 완성되지 않은 것으로 보입니다. CSV 요구 사항이나 스크립트에서 게시물을 상위 주제(topic)와 연결하는 기능이 보이지 않습니다. 최종적으로 어떻게 구현될지 모르겠습니다.

또한 원본 게시 날짜도 보존하고 싶은데, 이를 위한 필드가 없습니다.

Zendesk 가져오기 스크립트는 "topic_id"와 “created_at” 필드를 처리합니다. Zendesk 가져오기가 더 나은 선택지인지, 아니면 제 CSV 데이터에 없는 필드 때문에 오류가 발생할지 모르겠습니다. (저는 Zendesk에서 이관하는 것이 아닙니다.)

기존 CSV 가져오기 스크립트를 사용해 본 경험이 있거나, 기능을 추가하도록 수정해 보신 분이 계신지 궁금합니다.

코어에 통합되기 전에 CSV 가져오기 도구를 사용해 본 적이 있습니다(또한 @pfaffman이 개발을 후원하기도 했었죠).

이 도구는 주제 내의 게시글 순서와 원본 게시 날짜를 잘 유지하는 것 같았습니다. 스테이징 인스턴스에서(또는 단순히 백업 후에) 직접 시도해 보시고 결과를 확인해 보시는 것은 어떨까요?

문제가 발생하면 스크립트를 수정하는 것이 좋겠지만, 제 생각에는 원하시는 작업을 문제없이 수행할 수 있을 것 같습니다.

잠시 보류했다가 이제야 다시 이 문제로 돌아왔습니다. 성공할 가능성이 있다고 판단되면 백업을 실행하고 무언가를 시도해 보려 하지만, 확신을 조금 더 갖고 싶습니다. 스크립팅 경험은 많지 않지만, @nathank 님이 제안하신 대로 csv importer가 게시글(답글)과 날짜를 어떻게 보존하는지 이해하고 싶습니다. 스크립트에는 이들에 대한 처리가 정의되어 있지 않아 보이기 때문입니다.

이 스크립트는 사용자, 이메일, 사용자 정의 필드, 카테고리, 주제에 대해 제한된 필드만 가져옵니다.

저는 사용자 정의 필드나 새 카테고리가 필요하지 않으므로, 관련 있는 CSV 파일과 지정된 필드는 다음과 같습니다:

 == CSV 파일 형식
파일 이름: users
헤더: id,username

파일 이름: emails
헤더: user_id,email

파일 이름: topics_new_users
헤더: id,user_id,title,category_id,raw

파일 이름: topics_existing_users
헤더: id,user_id,title,category_id,raw

이 데이터 모델을 대충 살펴본 결과, Discourse의 주제(Topics)와 게시글(Posts)은 몇 가지 구별되는 필드를 가진 서로 다른 개체입니다:

스크립트에서 게시글 — 또는 날짜를 처리하는 부분은 보이지 않습니다.

수신된 주제와 게시글 데이터를 함께 묶어 넣어야 하는 걸까요? 그렇다면 Discourse는 주제/답글 관계를 어떻게 추론할까요 — 단순히 입력 순서에 의해서만 그런 걸까요? 답글은 공유된 ID가 처음 등장하는 주제를 기준으로 연결되는 걸까요? ID에 대해 스크립트가 언급하는 것은 이것뿐입니다:
topics_existing_users를 제외하고, 데이터의 ID는 파일 간에 일관성만 유지된다면 무엇이든 될 수 있습니다.

만약 스크립트에 무언가 빠진 것이 아니라면, 제가 무언가를 놓치고 있는 것이겠지요. 어떤 설명이나 조언도 감사히 받겠습니다!