Опыт импорта пользователей и тем из CSV-файлов?

У меня есть несколько (82) пользователей и (133) сообщения, которые я хотел бы перенести с неудачной попытки на бывшей платформе. Небольшой объём, но достаточный, чтобы ручное копирование и вставка стало обременительным. Я пока планирую попробовать скрипт импорта через CSV. Это будет мой первый опыт работы со скриптом на Ruby.

Я подготовил CSV-файлы согласно документации по адресу: discourse/script/import_scripts/csv_importer.rb at main · discourse/discourse · GitHub

Однако, если я что-то упускаю, скрипт импорта CSV кажется неполным. В требованиях к CSV или в самом скрипте я не вижу возможности связать сообщения с родительскими темами. Неясно, как это в итоге будет выглядеть.

Также я хотел бы сохранить исходные даты публикаций, но здесь нет соответствующего поля.

Импортер Zendesk работает с полями “topic_id” и “created_at”. Не знаю, будет ли импортер Zendesk лучшим вариантом или он выдаст ошибку из-за отсутствия полей в моих CSV-данных. (Я не переезжаю с Zendesk.)

Интересует, есть ли у кого-то опыт работы с импортером CSV в его текущем виде или, возможно, кто-то модифицировал его для добавления функциональности.

Я использовал CSV-импортер до его включения в ядро (и спонсировал его разработку @pfaffman).

Кажется, он отлично сохраняет посты в темах, а также оригинальные даты публикаций. Почему бы не попробовать его на тестовом экземпляре (или просто после создания резервной копии) и посмотреть, что получится?

Если возникнут проблемы, было бы хорошо исправить скрипт, но я подозреваю, что он справится с вашей задачей на отлично.

Наконец-то возвращаюсь к этому вопросу, отложив его на время. Я готов сделать резервную копию и попробовать что-то, если смогу оценить шансы на успех, но мне нужно чуть больше уверенности. У меня мало опыта в написании скриптов, но я очень хочу понять, как импортер CSV, как предлагает @nathank, будет сохранять сообщения (ответы) и даты, поскольку в скрипте, похоже, не определена какая-либо обработка этих данных.

Он импортирует ограниченный набор полей для: пользователей, электронных писем, пользовательских полей профиля, категорий и тем.

Мне не нужны пользовательские поля профиля или новые категории, поэтому релевантные 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

При беглом взгляде на модель данных видно, что темы (Topics) и сообщения (Posts) в Discourse — это две разные сущности с различными полями:

В скрипте я не вижу ничего, что обрабатывало бы сообщения — или даты.

Возможно, предполагается, что я объединю входящие данные о темах и сообщениях, но если так, то как Discourse будет определять связь «тема/ответ»? Это просто порядок ввода? Связаны ли ответы с темой по первому появлению общего ID? Всё, что сказано об ID:
за исключением topics_existing_users, ID в данных могут быть любыми, при условии, что они согласованы между файлами.

Если в скрипте ничего не упущено, то упущено это, видимо, мной. Буду благодарен за любые разъяснения!