Nur 5.000 Beiträge und etwa 1.000 Mitglieder
Ich warte immer noch auf den Big Board-Importer, um meinen 18M-Post im Forum zu testen.
Für XenForo? Wir haben zwar andere Massenimporte, aber es stimmt, das wäre für 18 Millionen Beiträge extrem langsam!
Wir arbeiten an unserem eigenen internen Massenimporter für 27 Millionen Beiträge. Die Dauer hat sich von etwas mehr als einer Woche (ohne Anhänge) auf weniger als einen Tag mit allem reduziert. Gestern haben wir unseren ersten Importtest ohne Fehler abgeschlossen. Wirklich spannende Sachen.
Danke, Justin. Ich habe mir das ebenfalls kurz angesehen – sieht das für dich in Ordnung aus? (Falls du magst, kannst du es gerne zum offiziellen Importer hinzufügen.)
XENFORO_DB = "xenforo_db_3"
TABLE_PREFIX = "xf_"
BATCH_SIZE = 1000
ATTACHMENT_DIR = '/FULL/PATH/TO/attachments'
AVATAR_DIR = '/FULL/PATH/TO/avatars'
(Habe die letzte Zeile hinzugefügt^^ – das bedeutet, du musst die Avatare dorthin kopieren.)
def execute
import_users
import_categories
import_posts
import_avatars
end
(Habe die letzte Zeile hinzugefügt^^)
def import_avatars
if AVATAR_DIR
users = User.all
users.each do |u|
unless u.custom_fields["import_id"].nil?
import_id = u.custom_fields["import_id"]
if import_id.to_i < 1000
dir_num = "0"
elsif import_id.to_i > 1000
dir_num = import_id.first
end
avatar_filename = "#{import_id}.jpg"
file_path = "#{AVATAR_DIR}/l/#{dir_num}"
file_path_and_name = "#{file_path}/#{avatar_filename}"
if File.exists?(file_path_and_name)
upload = create_upload(u.id, file_path_and_name, avatar_filename)
if upload.persisted?
u.import_mode = false
u.create_user_avatar
u.import_mode = true
u.user_avatar.update(custom_upload_id: upload.id)
u.update(uploaded_avatar_id: upload.id)
else
puts "Error: Upload did not persist for #{u.username} #{avatar_filename}!"
end
end
end
end
end
end
Es ist hier schon sehr spät, daher habe ich vielleicht einige Fehler gemacht oder einiges vergessen. Dabei gehe ich davon aus, dass alle Avatare .jpg sind (was bei meinen allen der Fall zu sein scheint). Bei den u.import_mode-Schaltern war ich mir nicht ganz sicher, daher habe ich sie einfach auskommentiert.
Völlig ungetestet (es ist hier fast 5 Uhr morgens
)
Ich habe auf meiner Dev-Maschine einen Test mit einem Forum von 100.000 Beiträgen durchgeführt, und das dauerte 90 Minuten. Das Forum, das ich importieren möchte, hat einige Millionen Beiträge, also vielleicht das Zehnfache?
Toll! Werdet ihr ihn mit uns teilen? Hast du eine Ahnung, wann?
Das aktuelle Ziel ist es, sicherzustellen, dass alles einwandfrei funktioniert. Sobald unsere Seite migriert ist, wollen wir es schließlich in das Discourse-Repository hochladen, damit auch andere es nutzen können.
Eine schrittweise Anleitung wäre auch sehr hilfreich, bitte :).
Für 5.000 Beiträge und etwa 600 Anhänge dauerte es auf einem älteren Xeon-Prozessor und einer SSD-Festplatte ungefähr 10 Minuten. Ich würde mir eine ausreichend leistungsstarke Maschine besorgen, den Import offline durchführen und ihn einfach laufen lassen.
Fantastisch! Ich freue mich schon darauf.
Okay, ich habe einen sehr schnellen Test durchgeführt, und die Änderungen im Skript scheinen funktioniert zu haben. Ich führe jetzt einen ordentlichen Test mit einigen tausend Mitgliedern und 100.000 Beiträgen durch. Ich melde mich, falls es funktioniert…
Hallo, gibt es Neuigkeiten? Wenn du Hilfe beim Testen brauchst, helfe ich gerne.
Ich erhalte einen Fehler, dass die Tabelle ‘users’ nicht existiert, wenn ich das XenForo-Skript ausführe. Jede Hilfe wird wirklich geschätzt!
Ich lese seit einer Stunde darüber, habe es aber noch nicht herausgefunden.
Am Anfang des Skripts befinden sich einige Variablen, die du ausfüllen musst, damit es eine Verbindung zu deiner xenForo MySQL-Datenbank herstellen und die Daten abfragen kann. Ich glaube, „import_db
@Ghan Ich dachte, ich importiere damit nach import_db: mysql -u root -p import_db < /shared/db.sql
Meine xenforo.rb ist:
Ah, okay. Wenn das dein Datenbankname ist, prüfe bitte, ob der Tabellename korrekt ist. Deine Tabelle könnte xf_user mit dem Präfix lauten, was zu einem Problem führen würde. Im Skript sollte zudem eine Variable TABLE_PREFIX vorhanden sein.
@Ghan Vielen Dank!
Momentan stecke ich noch bei dem Import-Skript fest.
Es durchläuft Benutzer und Kategorien, das funktioniert alles gut. Bei der Funktion import_posts hängt es jedoch einfach, bis es nach einigen Stunden abgelaufen ist.
Ich beginne mit dem Debuggen, indem ich einfach die Werte in import_posts ausgeben lasse:
Alle Ausgaben nach der Zuweisung der Variable results werden nie angezeigt.
Falls jemand plant, ein vb3-Forum zu importieren, könnte diese Anleitung hilfreich sein, wenn Sie auch eine XenForo-Lizenz besitzen:
Importiert dieser Importer Tags von XenForo zusammen mit den Threads, an die sie angehängt sind?
Es ist immer eine gute Idee, sich den Quellcode anzusehen.
Ich denke, die Antwort ist… ja (bin aber nicht sehr vertraut mit Xenforo-Datenstrukturen):
Es sieht also so aus, als hätte es unter bestimmten Bedingungen zumindest einmal einige Tags für jemanden importiert. Wenn Sie Glück haben, funktioniert es auch bei Ihnen!



