Ich habe dieses Skript heute verwendet, und es hat gut funktioniert. Das einzige Problem, das ich hatte, war, dass es alle verbannten Benutzer sowie weich gelöschte (versteckte) Beiträge/Threads von Xenforo importierte. Dadurch wurden nach dem Import Hunderte von Spam-Beiträgen/Threads in Discourse sichtbar.
Wenn Sie viele Spam-Beiträge/Threads haben, die Sie nicht importieren möchten, sollten Sie folgende SQL-Änderungen im Skript „xenforo.rb" in Betracht ziehen:
- Fügen Sie die folgende WHERE-Klausel hinzu, um sicherzustellen, dass nur aktive, nicht verbannte Benutzer importiert werden.
def import_users
puts '', "creating users"
total_count = mysql_query("SELECT count(*) count FROM #{TABLE_PREFIX}user;").first['count']
batches(BATCH_SIZE) do |offset|
results = mysql_query(
"SELECT user_id id, username, email, custom_title title, register_date created_at,
last_activity last_visit_time, user_group_id, is_moderator, is_admin, is_staff
FROM #{TABLE_PREFIX}user
WHERE user_state = 'valid' AND is_banned = 0
LIMIT #{BATCH_SIZE}
OFFSET #{offset};")
- Ändern Sie die folgende WHERE-Klausel, um sicherzustellen, dass nur sichtbare Threads/Beiträge importiert werden.
def import_posts
puts "", "creating topics and posts"
total_count = mysql_query("SELECT count(*) count from #{TABLE_PREFIX}post").first["count"]
posts_sql = "
SELECT p.post_id id,
t.thread_id topic_id,
#{@prefix_as_category ? 't.prefix_id' : 't.node_id'} category_id,
t.title title,
t.first_post_id first_post_id,
p.user_id user_id,
p.message raw,
p.post_date created_at
FROM #{TABLE_PREFIX}post p,
#{TABLE_PREFIX}thread t
WHERE p.thread_id = t.thread_id AND p.message_state = 'visible' AND t.discussion_state = 'visible'
ORDER BY p.post_date
LIMIT #{BATCH_SIZE}" # needs OFFSET