Expérience dans l'importation d'utilisateurs et de sujets depuis des fichiers CSV ?

J’ai quelques (82) utilisateurs et (133) publications que j’aimerais transférer d’une tentative avortée sur une ancienne plateforme. C’est peu, mais juste assez pour que le copier-coller soit fastidieux. J’espère pouvoir essayer le script d’importation CSV. Ce serait la première fois que je travaillerais avec un script Ruby.

J’ai préparé des fichiers CSV conformément à discourse/script/import_scripts/csv_importer.rb at main · discourse/discourse · GitHub

Mais à moins que je ne rate quelque chose, le script d’importation CSV ne semble pas complet. Je ne vois aucune disposition dans les exigences CSV ou dans le script pour associer les publications aux sujets parents. Je ne sais pas à quoi cela ressemblerait.

J’aimerais également que les dates originales des publications soient conservées, mais il n’y a pas de champ pour cela ici.

L’importateur Zendesk gère les champs “topic_id” et “created_at”. Je ne sais pas si l’importateur Zendesk serait un meilleur choix, ou s’il échouerait sur des champs que mes données CSV n’ont pas. (Je ne viens pas de Zendesk.)

Je me demande si quelqu’un a de l’expérience avec l’importateur CSV tel quel, ou s’il l’a peut-être modifié pour ajouter des fonctionnalités.

J’ai utilisé l’importateur CSV avant qu’il ne soit intégré au cœur (et j’ai parrainé son développement par @pfaffman).

Il semblait préserver les publications dans les sujets sans problème, ainsi que les dates de publication d’origine. Pourquoi ne pas l’essayer sur une instance de staging (ou simplement après une sauvegarde) et voir ce qui se passe ?

S’il y a des problèmes, il serait bon de faire corriger le script - mais je soupçonne qu’il fera très bien l’affaire pour vous.

1 « J'aime »

Enfin, je reviens à cela après l’avoir mis de côté pendant un moment. Je suis prêt à faire une sauvegarde et à essayer quelque chose si j’ai une chance de succès, mais j’ai besoin d’un peu plus de confiance. Je manque d’expérience en matière de scripts, mais j’aimerais vraiment comprendre comment le l’importateur csv préserverait les publications (réponses) et les dates, comme le suggère @nathank, car le script ne semble pas définir de gestion de ceux-ci.

Il importe des champs limités pour : les utilisateurs, les e-mails, les champs personnalisés des utilisateurs, les catégories et les sujets.

Je n’ai pas besoin de champs personnalisés pour les utilisateurs ni de nouvelles catégories, donc les CSV pertinents et leurs champs spécifiés sont :

 == Format des fichiers CSV
Nom du fichier : users
en-têtes : id,username

Nom du fichier : emails
en-têtes : user_id,email

Nom du fichier : topics_new_users
en-têtes : id,user_id,title,category_id,raw

Nom du fichier : topics_existing_users
en-têtes : id,user_id,title,category_id,raw

D’après un coup d’œil à ce modèle de données, les Sujets et les Publications de Discourse sont deux créatures différentes avec des champs différenciants :

Je ne vois rien dans le script pour gérer les Publications — ou les dates.

Peut-être suis-je censé regrouper les données entrantes des Sujets et des Publications, mais si c’est le cas, comment Discourse déduirait-il la relation sujet/réponse — est-ce juste la séquence de l’entrée ? Les réponses sont-elles liées à un Sujet ayant la première apparition d’un ID partagé ? Tout ce qu’il dit sur les ID est :
sauf pour les topics_existing_users, les ID dans les données peuvent être n'importe quoi tant qu'ils sont cohérents entre les fichiers.

Si le script ne manque de rien, alors c’est moi qui manque. J’apprécie toute pensée clarifiante !