Com certeza não quero cometer nenhum erro, já que tenho 1,6 milhão de posts.
Existe uma maneira de mirar apenas 1 post específico para fazer testes antes de substituir as strings em todos os posts?
Criei um post de “teste” no meu fórum com várias tags BB em vários contextos.
Quanto tempo levaria uma substituição de string em mais de 1 milhão de posts?
Se levar muito tempo, existe uma maneira mais rápida? Talvez editando diretamente os textos no banco de dados?
Existe uma maneira de fazer múltiplas substituições de uma vez (por exemplo, adicionar quebras de linha antes e depois das tags [quote], substituindo [b] e [i] por ** e *, removendo [color] e [indent], etc)?
edit: aplicar essas modificações no conteúdo bruto dos posts via Rails e depois rebakear todos os posts resolveria?
Apenas para sua informação, após nossa migração de 1 milhão de posts do vB3 para o Discourse há cerca de seis meses:
Ao migrar do vB, realizamos toda essa limpeza de dados e refatoração de tags bbcode com bastante código Ruby personalizado no script de migração.
Descobrimos que essa foi a melhor abordagem para nós: limpar tudo executando muitas expressões REGEX gsub em Ruby nos posts do vB antes de inseri-los no banco de dados do Discourse.
Caso contrário, você precisará executar muitas consultas PostgreSQL nos posts brutos do Discourse e recozá-los novamente.
Após testes extensivos, decidimos fazer todo o pré-processamento durante a migração (e não após a migração). Descobrimos que essa é a maneira “mais rápida” de realizar uma migração perfeita.
Você sabe se há uma maneira de reimportar apenas os posts sem afetar os dados do Discourse já importados, especialmente os dados vinculados aos IDs dos posts (usuários, tópicos, anexos, links permanentes, etc.)?
A importação é tão demorada que, se eu esquecer algo e precisar reimportar TUDO novamente, levará dias de novo.
Quando o script estava importando os posts, ele criava cerca de 50.000 posts do Discourse por hora. Por que um rebake leva tanto mais tempo?
Entendo sua dor. Após nossa migração original, escrevemos bastante código Ruby personalizado para limpar mais de uma década de código copiado e colado de todos os cantos do planeta; sem falar em todos os caracteres malformados (mojibake) e conjuntos de caracteres estranhos; e, claro, em todos os diversos bbcodes aninhados que precisavam de bastante “arte em Ruby” para serem limpos adequadamente durante a migração.
Não foi trivial e levou muito tempo (e inúmeras tentativas de migração); mas como somos / somos principalmente um fórum de programação, se o seu fórum for composto principalmente apenas por texto (e não por código), o processo deve ser mais direto.
Nossa equipe teve que escrever bastante REGEX “algo complexa para escapar isso e aquilo” também; porque converter todo aquele bbcode legado aninhado para markdown não é trivial quando as pessoas postaram tanto bbcode aninhado ao longo dos anos. Também removemos muito bbcode que julgamos ter pouco valor anos após a publicação.
Para responder à sua pergunta original acima:
Sim, você pode simplesmente comentar os métodos que deseja pular no script de migração.
Na verdade, reescrevemos grande parte dos métodos de migração, mas eles foram um ponto de partida muito bom e, portanto, muito úteis, considerando que a migração do vB3 era e continua sendo não suportada.
Eu sei disso, mas se eu simplesmente iniciar o script de migração, ele irá ignorar as postagens existentes.
Se eu excluir todas as minhas postagens importadas do Discourse antes de reiniciar a migração, suponho que importá-las novamente definirá um ID diferente (ID da postagem do Discourse) em comparação com a migração anterior e todas as referências a essas postagens provavelmente ficarão quebradas.
Se for possível, é muito, muito mais fácil pedir ao importador para corrigir essas coisas. Se você já colocou o site no ar, será apenas longo e doloroso. Você poderia criar um script de importação que modifique as postagens já importadas, mas não conheço nenhum modelo de como fazer isso.