Benutzer per CSV importieren

Ich weiß, dass es eine „Frontend“-Möglichkeit gibt, Benutzer per CSV einzuladen, aber das funktioniert in meinem Fall nicht, da dadurch eine E-Mail an die Tausenden von Personen gesendet wird, die der Seite hinzugefügt werden.

Wenn ich versuche, es über die CLI hinzuzufügen, erhalte ich die folgenden Fehler.

/var/www/discourse# rails runner script/import_scripts/csv_importer.rb /var/www/discourse/tmp/users.csv
Lade bestehende Gruppen…
Lade bestehende Benutzer…
Lade bestehende Kategorien…
Lade bestehende Beiträge…
Lade bestehende Themen…
Datei existiert nicht: /var/www/discourse/tmp/emails.csv
Datei existiert nicht: /var/www/discourse/tmp/custom_fields.csv
bundler: konnte den Befehl nicht laden: 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)
                                                       ^^^^^^^

Irgendwelche Gedanken, was da los sein könnte?

Dieses Skript ist ein Migrationsskript, es ist nicht dafür gedacht, die einzelne Aufgabe des Hinzufügens von Benutzern zu erledigen.

Möchten Sie einfach nur eine größere Anzahl echter Benutzerkonten erstellen, oder sind diese zu Testzwecken gedacht?

Aha! Ich habe Importeur gesehen, nicht Migration! Danke für den Tipp.

Ich möchte eine große Anzahl von Benutzern per CSV importieren.

Importieren und migrieren sind hier meist Synonyme.

Es sollte die Aufgabe erfüllen, all diese Benutzer anzulegen (sie werden keine Passwörter haben, daher müssen sie eines erhalten, wahrscheinlich durch den Versand einer E-Mail an sie).
Sie werden wahrscheinlich ein wenig Programmierkenntnisse benötigen, damit es funktioniert.

Zuerst einmal – alles Gute zum Geburtstag.

Ich habe so gut wie keine Programmierkenntnisse. Ich ging davon aus, dass es so einfach wäre, die Datei import.rb zu starten, die auf die Datei users.csv „zeigt“.

Die Fehlermeldungen, die sie ausgibt, ergeben für mich absolut keinen Sinn. Ich habe mir Zeile 29 des Import-Skripts angesehen, und dort wurde auf Header verwiesen. Ich nahm an, dass damit die Spalten der CSV-Datei gemeint waren, also habe ich einige Zeit damit verbracht, daran herumzuspielen, allerdings ohne Erfolg.

Nun, Sie sind nicht weit gekommen, da es Ihre CSV-Datei nicht einmal geöffnet hat.

Das ist eines dieser frustrierenden Dinge, bei denen es 30 Sekunden oder Stunden dauern kann.

Aber Sie könnten versuchen, die Datei dorthin zu kopieren. Es ist knifflig, weil es ein Ort im Dateisystem des Computers und ein anderer innerhalb des Containers ist. Sobald Sie das gelöst haben, können Sie sich mit den Spaltenüberschriften herumschlagen.

Manchmal gibt es eine einfache Lösung für das ursprüngliche Problem[1].

Deaktivieren Sie E-Mails, importieren Sie die Benutzer und aktivieren Sie dann E-Mails wieder.


  1. siehe x-y-Problem ↩︎

1 „Gefällt mir“

Aha – aber das Problem hier ist, dass ich glaube, dass der Importeur die users.csv erfasst hat.

Ich habe keine emails.csv usw. und möchte sie auch nicht importieren.

Oder handelt es sich um einen Multipart-Importer? Wobei Benutzer (Namen) in einer CSV-Datei und die E-Mails in einer anderen CSV-Datei (emails.csv) sind.

Es sieht so aus, als würde er die Datei users.csv finden, da er darüber keinen Fehler ausgibt.