Erfahrung im Import von Benutzern und Themen aus CSV-Dateien?

Ich habe ein paar (82) Benutzer und (133) Beiträge, die ich von einem fehlgeschlagenen Versuch auf einer früheren Plattform übernehmen möchte. Winzig, aber gerade genug, um das Kopieren und Einfügen mühsam zu machen. Ich hoffe vorläufig, das CSV-Importskript auszuprobieren. Es wäre das erste Mal, dass ich mit einem Ruby-Skript arbeite.

Ich habe CSV-Dateien gemäß discourse/script/import_scripts/csv_importer.rb at main · discourse/discourse · GitHub vorbereitet.

Aber wenn ich nichts übersehe, scheint das CSV-Importskript nicht vollständig zu sein. Ich sehe keine Vorkehrung in den CSV-Anforderungen oder im Skript, um Beiträge mit übergeordneten Themen zu verknüpfen. Ich bin mir nicht sicher, wie das aussehen würde.

Ich möchte auch, dass die ursprünglichen Beitragsdaten erhalten bleiben, aber hierfür gibt es kein Feld.

Der Zendesk-Importer befasst sich mit den Feldern “topic_id” und “created_at”. Ich weiß nicht, ob der Zendesk-Importer eine bessere Wahl wäre oder ob er bei Feldern, die meine CSV-Daten nicht haben, abstürzen würde. (Ich komme nicht von Zendesk.)

Ich frage mich, ob jemand Erfahrung mit dem CSV-Importer hat, wie er ist, oder ihn vielleicht um zusätzliche Funktionalität erweitert hat.

Ich habe den CSV-Importer verwendet, bevor er in den Kern integriert wurde (und habe seine Entwicklung durch @pfaffman gesponsert).

Er schien Beiträge in Themen genauso gut zu erhalten wie die ursprünglichen Beitragsdaten. Warum probieren Sie es nicht auf einer Staging-Instanz (oder einfach nach einem Backup) aus und sehen, was passiert?

Wenn es Probleme gibt, wäre es gut, das Skript zu reparieren – aber ich vermute, es wird für Sie gut funktionieren.

1 „Gefällt mir“

Endlich nehme ich mich dem wieder an, nachdem ich es eine Weile aufgeschoben habe. Ich bin bereit, ein Backup zu erstellen und etwas auszuprobieren, wenn ich eine Erfolgschance sehe, aber ich brauche hier etwas mehr Vertrauen. Mir fehlt viel Skripterfahrung, aber ich würde wirklich gerne verstehen, wie der CSV-Importeur Beiträge (Antworten) und Daten beibehalten würde, wie @nathank vorschlägt, da das Skript keine Handhabung dafür zu definieren scheint.

Es importiert begrenzte Felder für: Benutzer, E-Mails, benutzerdefinierte Benutzerfelder, Kategorien und Themen.

Ich benötige keine benutzerdefinierten Benutzerfelder oder neue Kategorien, daher sind die relevanten CSVs und ihre angegebenen Felder:

 == CSV-Dateiformat
Dateiname: users
Header: id,username

Dateiname: emails
Header: user_id,email

Dateiname: topics_new_users
Header: id,user_id,title,category_id,raw

Dateiname: topics_existing_users
Header: id,user_id,title,category_id,raw

Bei einem Blick auf dieses Datenmodell sind Discourse-Themen und -Beiträge zwei verschiedene Dinge mit einigen unterscheidenden Feldern:

Ich sehe nichts im Skript, das Beiträge – oder Daten – verarbeitet.

Vielleicht soll ich eingehende Themen- und Beitragsdaten zusammenfassen, aber wenn ja, wie würde Discourse die Beziehung zwischen Thema/Antwort ableiten – ist es nur die Reihenfolge der Eingabe? Sind Antworten mit einem Thema verbunden, das die erste Erscheinung einer gemeinsamen ID hat? Alles, was es über IDs sagt, ist:
mit Ausnahme von topics_existing_users können die IDs in den Daten beliebig sein, solange sie unter den Dateien konsistent sind.

Wenn das Skript nichts vermisst, dann muss ich es vermissen. Ich schätze jeden klärenden Gedanken!