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.

Ich habe den Code in letzter Zeit nicht mehr angesehen, aber die Benutzer-CSV-Datei muss die E-Mail-Adresse enthalten. Die Themen und Beiträge stehen in einer anderen CSV-Datei.

OK, ich bin auf dem richtigen Weg. Ich werde mich weiter damit beschäftigen.

Hier wird der Dateiname festgelegt:

  CSV_FILE_PATH = ENV["CSV_USER_FILE"] || "/var/www/discourse/tmp/users.csv"

Legen Sie die Datei entweder dort ab oder setzen Sie die Umgebungsvariable CSV_USER_FILE auf den Speicherort der Datei.

Oh, aber das Erste, was das Skript tut, ist das Einlesen ALLER erwarteten CSVs (all diese @... = \load_csv` Zeilen), daher müssen Sie diejenigen auskommentieren oder löschen, die Sie nicht benötigen. Und import_users betrachtet benutzerdefinierte Feldinformationen, also müssen Sie auch das ändern.

Wenn das nicht genug Hinweis ist und Sie ein Budget haben, senden Sie mir eine Zahl per E-Mail (in meinem Profil) und ich werde sehen, wie ich Ihnen für diese Zahl helfen kann.

2 „Gefällt mir“