Apenas 5 mil posts e cerca de 1 mil membros
Ainda estou aguardando o importador de big board para tentar e testar meu post de 18m no fórum.
Para XenForo? Temos outras importações em massa, mas é verdade que isso seria muito lento para 18 milhões de posts!
Estamos desenvolvendo nosso próprio importador em massa interno para 27 milhões de posts. O processo, que levava um pouco mais de uma semana (sem contar os anexos), agora leva menos de um dia com tudo incluso. Realizamos nosso primeiro teste de importação ontem sem nenhum erro. Coisas realmente empolgantes.
Obrigado, Justin. Dei uma olhada rápida nisso — parece ok para você? (Sinta-se à vontade para adicioná-lo ao importador oficial, se quiser)
XENFORO_DB = "xenforo_db_3"
TABLE_PREFIX = "xf_"
BATCH_SIZE = 1000
ATTACHMENT_DIR = '/CAMINHO/COMPLETO/DO/attachments'
AVATAR_DIR = '/CAMINHO/COMPLETO/DO/avatars'
(Adicionei a última linha^^ — significa que você precisará copiar os avatares para lá)
def execute
import_users
import_categories
import_posts
import_avatars
end
(Adicionei a última linha^^)
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 "Erro: Upload não persistiu para #{u.username} #{avatar_filename}!"
end
end
end
end
end
end
É muito tarde aqui, então posso ter cometido alguns erros ou esquecido muita coisa, mas isso assume que todos os avatares são .jpg (o que parece ser o caso de todos os meus). Não tinha certeza sobre as comutações u.import_mode, então apenas comentei-as.
Totalmente não testado (são quase 5h da manhã aqui
)
Fiz um teste na minha máquina de desenvolvimento em um fórum com 100 mil posts e levou 90 minutos. Aquele que quero importar tem alguns milhões de posts, então talvez 10 vezes mais?
Legal! Vocês vão compartilhá-lo conosco? Alguma ideia de quando?
O objetivo atual é garantir que tudo esteja funcionando perfeitamente e, assim que nosso site for migrado, eventualmente publicá-lo no repositório do Discourse para que outros possam usá-lo.
Um guia passo a passo também seria muito útil, por favor :).
Para as 5 mil postagens e cerca de 600 anexos, em um Xeon mais antigo e um disco SSD, levou cerca de 10 minutos. Eu pegaria uma máquina com desempenho razoável, faria a importação offline e deixaria o processo rodar.
Fantástico! Estou ansioso por isso.
Ok, fiz um teste muito rápido e as adições ao script parecem ter funcionado — agora estou fazendo um teste adequado com alguns milhares de membros e 100 mil posts. Vou retornar com o resultado se funcionar…
Oi, tem alguma novidade? Se precisar de ajuda com os testes, ficarei feliz em ajudar.
Estou recebendo um erro informando que a tabela de usuários não existe ao executar o script do XenForo. Qualquer ajuda seria muito apreciada!
Estou lendo sobre isso há uma hora, mas ainda não consegui resolver.
Existem algumas variáveis no topo do script que você precisa preencher para que ele possa se conectar ao seu banco de dados MySQL do xenForo e consultar os dados. Acredito que “import_db” possa ser o valor de preenchimento — verifique se esses valores foram preenchidos corretamente.
@Ghan Eu pensei que estava importando para import_db com isso: mysql -u root -p import_db < /shared/db.sql
Meu xenforo.rb é:
Ah, ok. Se esse for o nome do seu banco de dados, verifique se o nome da tabela está correto. Sua tabela pode ser xf_user com o prefixo, o que causaria um problema. Deve haver uma variável TABLE_PREFIX no script também.
@Ghan Obrigado!
No momento, ainda estou travado no script de importação.
Ele itera por usuários e categorias, tudo certo. Na função import_posts, porém, ela simplesmente fica travada até que, após algumas horas, ocorra o timeout.
Comecei a depurar isso apenas imprimindo os valores dentro de import_posts:
Todas as impressões após a atribuição da variável results nunca são exibidas.
Caso alguém esteja procurando importar um fórum vb3, este guia pode ajudar se você também tiver uma licença do Xenforo:
Este importador importa tags do xenForo junto com os tópicos aos quais estão associados?
É sempre uma boa ideia olhar o código-fonte.
Acho que a resposta é… sim (mas não estou super familiarizado com as estruturas de dados do Xenforo):
Então, parece que pelo menos uma vez importou algumas tags para alguém sob algumas condições. Se você tiver sorte, funcionará para você também!



