Experiência em importar usuários e tópicos de arquivos CSV?

Tenho alguns (82) usuários e (133) posts que gostaria de trazer de uma tentativa abortada em uma plataforma anterior. Poucos, mas o suficiente para tornar o copiar e colar oneroso. Estou esperando tentar o script importador de CSV. Seria minha primeira vez trabalhando com um script Ruby.

Preparei arquivos CSV conforme discourse/script/import_scripts/csv_importer.rb at main · discourse/discourse · GitHub

Mas, a menos que eu esteja perdendo alguma coisa, o script de importação de CSV não parece completo. Não vejo nenhuma provisão nos requisitos do CSV ou no script para associar posts a tópicos pai. Não tenho certeza de como isso acabaria.

Eu também gostaria que as datas originais dos posts fossem preservadas, mas não há campo para isso aqui.

O importador do Zendesk lida com os campos “topic_id” e “created_at”. Não sei se o importador do Zendesk seria uma aposta melhor, ou se falharia em campos que meus dados CSV não possuem. (Eu não venho do Zendesk.)

Gostaria de saber se alguém tem experiência com o importador de CSV como está, ou talvez o modificou para adicionar funcionalidade.

Eu usei o importador CSV antes de ele ser incorporado ao core (e patrocinei seu desenvolvimento por @pfaffman).

Parecia preservar posts em tópicos muito bem, assim como as datas originais das postagens. Por que não tentar em uma instância de staging (ou simplesmente após um backup) e ver o que acontece?

Se houver problemas, seria bom consertar o script - mas suspeito que ele fará o trabalho para você muito bem.

1 curtida

Finalmente voltando a isso depois de adiar por um tempo. Estou disposto a fazer um backup e tentar algo se puder ter uma chance de sucesso, mas anseio por um pouco mais de confiança aqui. Tenho pouca experiência com scripts, mas gostaria muito de entender como o importador de CSV preservaria posts (respostas) e datas, como @nathank sugere, já que o script não parece definir nenhum tratamento para eles.

Ele importa campos limitados para: usuários, e-mails, campos de usuário personalizados, categorias e tópicos.

Não preciso de campos de usuário personalizados ou novas categorias, então os CSVs relevantes e seus campos especificados são:

 == Formato dos arquivos CSV
Nome do arquivo: users
cabeçalhos: id,username

Nome do arquivo: emails
cabeçalhos: user_id,email

Nome do arquivo: topics_new_users
cabeçalhos: id,user_id,title,category_id,raw

Nome do arquivo: topics_existing_users
cabeçalhos: id,user_id,title,category_id,raw

Com uma olhada neste modelo de dados, Tópicos e Posts do Discourse são duas criaturas diferentes com alguns campos diferenciadores:

Não vejo nada no script para lidar com Posts — ou datas.

Talvez eu deva agrupar os dados de Tópico e Post recebidos, mas se for o caso, como o Discourse inferiria o relacionamento tópico/resposta — é apenas a sequência da entrada? As respostas estão relacionadas a um Tópico tendo a primeira aparição de um ID compartilhado? Tudo o que diz sobre IDs é:
exceto para topics_existing_users, os IDs nos dados podem ser qualquer coisa, desde que sejam consistentes entre os arquivos.

Se o script não está perdendo algo, então eu devo estar. Agradeço quaisquer pensamentos esclarecedores!