Importer des utilisateurs via CSV

Je sais qu’il existe une méthode « frontend » pour inviter des utilisateurs via CSV, mais cela ne fonctionnera pas dans mon cas, car cela enverra un e-mail aux milliers de personnes qui seront ajoutées au site.

Lorsque j’essaie de l’ajouter via l’interface de ligne de commande (CLI), j’obtiens les erreurs suivantes.

/var/www/discourse# rails runner script/import_scripts/csv_importer.rb /var/www/discourse/tmp/users.csv
Loading existing groups…
Loading existing users…
Loading existing categories…
Loading existing posts…
Loading existing topics…
File doesn’t exist: /var/www/discourse/tmp/emails.csv
File doesn’t exist: /var/www/discourse/tmp/custom_fields.csv
bundler: failed to load command: script/rails (script/rails)
/var/www/discourse/script/import_scripts/csv_importer.rb:29:in initialize': undefined method headers’ for nil (NoMethodError)

@imported_custom_fields_names = @imported_custom_fields.headers.drop(1)
                                                       ^^^^^^^

Des idées sur ce qui pourrait se passer ?

Ce script est un script de migration, il n’est pas destiné à effectuer la tâche singulière d’ajouter des utilisateurs.

Voulez-vous simplement créer un plus grand nombre de comptes utilisateurs réels, ou sont-ils destinés à des tests ?

Aha ! J’ai vu importateur, pas migration ! Merci pour l’astuce.

Je souhaite importer une grande quantité d’utilisateurs via CSV

Importer et migrer sont en grande partie des synonymes.

Cela devrait accomplir la tâche de créer tous ces utilisateurs (ils n’auront pas de mots de passe, ils devront donc en obtenir un, probablement en leur envoyant un e-mail).
Vous aurez probablement besoin de comprendre un peu de programmation pour que cela fonctionne.

Tout d’abord, joyeux anniversaire.

Je n’ai quasiment aucune compétence en programmation. J’ai supposé que ce serait aussi simple que de lancer le fichier import.rb « pointé » vers le fichier users.csv.

Les erreurs qu’il a affichées n’ont absolument aucun sens pour moi. J’ai regardé la ligne 29 du script d’importation et elle faisait référence à des en-têtes, j’ai donc supposé qu’elle faisait référence aux colonnes du fichier csv, j’ai donc passé du temps à tripoter cela, sans succès.

Eh bien, vous n’êtes pas allé très loin car il n’a même pas ouvert votre fichier csv.

C’est l’une de ces choses frustrantes où cela pourrait prendre 30 secondes ou des heures.

Mais vous pourriez essayer de copier le fichier là-bas. C’est délicat car c’est un emplacement dans le système de fichiers de l’ordinateur et un autre à l’intérieur du conteneur. Une fois que vous aurez résolu cela, vous pourrez commencer à tripoter les en-têtes de colonnes.

Parfois, il existe une solution simple au problème initial[1].

Désactivez les e-mails, importez les utilisateurs, puis réactivez les e-mails.


  1. voir problème x-y ↩︎

1 « J'aime »

Aha - mais le problème ici, c’est que je pense que l’importateur a récupéré le fichier users.csv.

Je n’ai pas et je ne veux pas importer emails.csv, etc.

Ou s’agit-il d’un importateur multipartite ? Où les utilisateurs (noms) sont dans un csv, et les e-mails sont dans un autre csv (emails.csv)

Il semble qu’il trouve le fichier users.csv car il ne renvoie pas d’erreur à son sujet.