Estou trabalhando na importação de um arquivo mbox do Yahoo Groups e enfrentando alguns erros. Não tenho certeza de qual direção seguir neste momento para depuração e importação. Aqui estão os erros que estou vendo até agora:
https://pastebin.com/raw/2WTN3GTj
Você está usando o script mbox, certo? Funcionou bem para mim, sem erros. Os anexos estão faltando, mas não é o fim do mundo no meu caso.
Isso está correto, @tobiaseigen. A importação durou mais de 2 horas.
Além da última pergunta, gostaria de acrescentar que não tinha certeza se deveria prosseguir com a importação disso, mesmo com essas falhas… Estou me perguntando se, após corrigir os erros/falhas, poderemos simplesmente importá-los NOVAMENTE, e o sistema pulará as mensagens já importadas e prosseguirá com a importação adequada.
Não tenho certeza se o Sidekiq é relevante aqui — acredito que o script de importação roda fora do Discourse.
Caso ajude, aqui está meu log de importação. Na verdade, há algumas linhas semelhantes às suas, mas eu apenas decidi não me preocupar com isso. A vida é curta demais.
Como você tem tantos erros, parece que há um problema mais sistemático. Tem certeza de que o sistema tem RAM suficiente disponível? Não sei se você já tentou, mas talvez valha a pena examinar o arquivo de importação com mais atenção e tentar identificar se há algo que você possa descobrir — talvez precise apenas ajustar o split_regex de alguma forma ou fazer o upload do arquivo para seu servidor em um formato diferente?
Se continuar tendo problemas, você pode pedir ajuda no Marketplace — há alguns consultores por aqui que têm bastante experiência em fazer importações. Eu certamente não sou um especialista — foi minha primeira tentativa. ![]()
root@discourse:/var/discourse# ./launcher enter import
root@discourse-import:/var/www/discourse# RAILS_DB=secondsite
root@discourse-import:/var/www/discourse# export RAILS_DB
root@discourse-import:/var/www/discourse# import_mbox.sh
A importação do mbox está iniciando...
Carregando grupos existentes...
Carregando usuários existentes...
Carregando categorias existentes...
Carregando posts existentes...
Carregando tópicos existentes...
criando índice
indexando arquivos em /shared/import/data/list
indexando /shared/import/data/list/18929486-3.mbox
indexando /shared/import/data/list/18929486-2.mbox
indexando respostas e usuários
criando categorias
1 / 1 (100,0%) [4916421 itens/min]
criando usuários
69 / 69 (100,0%) [1178 itens/min] ]
criando tópicos e posts
A data está faltando. Ignorando 0462b41b966d8c11e6e32cc14c0b576d
1 / 2333 ( 0,0%) [179689 itens/min] A data está faltando. Ignorando 0adb9bd80082595a33130f7749d7f530
2 / 2333 ( 0,1%) [224693 itens/min] A data está faltando. Ignorando 3bd86d7adb396fbeb7d6dfcfe9f0be5f
3 / 2333 ( 0,1%) [283328 itens/min] A data está faltando. Ignorando 4f5397838e6c7f96eedfe116ce27be13
4 / 2333 ( 0,2%) [184374 itens/min] A data está faltando. Ignorando c8c14ab80e92ae1cacd4af99351319bd
45 / 2333 ( 1,9%) [334 itens/min] Falha ao mapear post para 2f401ce90708241252h30bdae5iad2ae0096e067b71@mail.gmail.com
método indefinido `hex' para nil:NilClass
/var/www/discourse/app/models/upload.rb:132:in `base62_sha1'
/var/www/discourse/app/models/upload.rb:386:in `short_url_basename'
/var/www/discourse/app/models/upload.rb:115:in `short_url'
/var/www/discourse/lib/upload_markdown.rb:17:in `image_markdown'
/var/www/discourse/lib/upload_markdown.rb:10:in `to_markdown'
/var/www/discourse/lib/email/receiver.rb:1085:in `block in add_attachments'
/var/www/discourse/lib/email/receiver.rb:1060:in `each'
/var/www/discourse/lib/email/receiver.rb:1060:in `add_attachments'
/var/www/discourse/script/import_scripts/mbox/importer.rb:137:in `format_raw'
/var/www/discourse/script/import_scripts/mbox/importer.rb:121:in `map_post'
/var/www/discourse/script/import_scripts/mbox/importer.rb:145:in `map_first_post'
/var/www/discourse/script/import_scripts/mbox/importer.rb:103:in `block (2 levels) in import_posts'
/var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
/var/www/discourse/script/import_scripts/base.rb:490:in `each'
/var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:97:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:869:in `loop'
/var/www/discourse/script/import_scripts/base.rb:869:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:83:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:91:in `import_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:35:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/mbox.rb:16:in `\u003cmodule:Mbox\u003e'
script/import_scripts/mbox.rb:10:in `\u003cmodule:ImportScripts\u003e'
script/import_scripts/mbox.rb:9:in `\u003cmain\u003e'
940 / 2333 (40,3%) [398 itens/min] Falha ao mapear post para BBCAF42471FF9540868B4DC02B885B1BBCDA1F@wn1217.or.providence.org
método indefinido `hex' para nil:NilClass
/var/www/discourse/app/models/upload.rb:132:in `base62_sha1'
/var/www/discourse/app/models/upload.rb:386:in `short_url_basename'
/var/www/discourse/app/models/upload.rb:115:in `short_url'
/var/www/discourse/lib/upload_markdown.rb:17:in `image_markdown'
/var/www/discourse/lib/upload_markdown.rb:10:in `to_markdown'
/var/www/discourse/lib/email/receiver.rb:1085:in `block in add_attachments'
/var/www/discourse/lib/email/receiver.rb:1060:in `each'
/var/www/discourse/lib/email/receiver.rb:1060:in `add_attachments'
/var/www/discourse/script/import_scripts/mbox/importer.rb:137:in `format_raw'
/var/www/discourse/script/import_scripts/mbox/importer.rb:121:in `map_post'
/var/www/discourse/script/import_scripts/mbox/importer.rb:159:in `map_reply'
/var/www/discourse/script/import_scripts/mbox/importer.rb:105:in `block (2 levels) in import_posts'
/var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
/var/www/discourse/script/import_scripts/base.rb:490:in `each'
/var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:97:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:869:in `loop'
/var/www/discourse/script/import_scripts/base.rb:869:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:83:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:91:in `import_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:35:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/mbox.rb:16:in `\u003cmodule:Mbox\u003e'
script/import_scripts/mbox.rb:10:in `\u003cmodule:ImportScripts\u003e'
script/import_scripts/mbox.rb:9:in `\u003cmain\u003e'
944 / 2333 (40,5%) [399 itens/min] Falha ao mapear post para 3A1D6C799D451B41BD0500303339622A023AA1@s-mail.integral-corp.com
método indefinido `hex' para nil:NilClass
/var/www/discourse/app/models/upload.rb:132:in `base62_sha1'
/var/www/discourse/app/models/upload.rb:386:in `short_url_basename'
/var/www/discourse/app/models/upload.rb:115:in `short_url'
/var/www/discourse/lib/upload_markdown.rb:17:in `image_markdown'
/var/www/discourse/lib/upload_markdown.rb:10:in `to_markdown'
/var/www/discourse/lib/email/receiver.rb:1085:in `block in add_attachments'
/var/www/discourse/lib/email/receiver.rb:1060:in `each'
/var/www/discourse/lib/email/receiver.rb:1060:in `add_attachments'
/var/www/discourse/script/import_scripts/mbox/importer.rb:137:in `format_raw'
/var/www/discourse/script/import_scripts/mbox/importer.rb:121:in `map_post'
/var/www/discourse/script/import_scripts/mbox/importer.rb:159:in `map_reply'
/var/www/discourse/script/import_scripts/mbox/importer.rb:105:in `block (2 levels) in import_posts'
/var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
/var/www/discourse/script/import_scripts/base.rb:490:in `each'
/var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:97:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:869:in `loop'
/var/www/discourse/script/import_scripts/base.rb:869:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:83:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:91:in `import_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:35:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/mbox.rb:16:in `\u003cmodule:Mbox\u003e'
script/import_scripts/mbox.rb:10:in `\u003cmodule:ImportScripts\u003e'
script/import_scripts/mbox.rb:9:in `\u003cmain\u003e'
1149 / 2333 (49,2%) [408 itens/min] Falha ao mapear post para FF35EE5B30156244A4370DC859B7F650F50626@s-mail.integral-corp.com
método indefinido `hex' para nil:NilClass
/var/www/discourse/app/models/upload.rb:132:in `base62_sha1'
/var/www/discourse/app/models/upload.rb:386:in `short_url_basename'
/var/www/discourse/app/models/upload.rb:115:in `short_url'
/var/www/discourse/lib/upload_markdown.rb:17:in `image_markdown'
/var/www/discourse/lib/upload_markdown.rb:10:in `to_markdown'
/var/www/discourse/lib/email/receiver.rb:1085:in `block in add_attachments'
/var/www/discourse/lib/email/receiver.rb:1060:in `each'
/var/www/discourse/lib/email/receiver.rb:1060:in `add_attachments'
/var/www/discourse/script/import_scripts/mbox/importer.rb:137:in `format_raw'
/var/www/discourse/script/import_scripts/mbox/importer.rb:121:in `map_post'
/var/www/discourse/script/import_scripts/mbox/importer.rb:159:in `map_reply'
/var/www/discourse/script/import_scripts/mbox/importer.rb:105:in `block (2 levels) in import_posts'
/var/www/discourse/script/import_scripts/base.rb:491:in `block in create_posts'
/var/www/discourse/script/import_scripts/base.rb:490:in `each'
/var/www/discourse/script/import_scripts/base.rb:490:in `create_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:97:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:870:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:869:in `loop'
/var/www/discourse/script/import_scripts/base.rb:869:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:83:in `batches'
/var/www/discourse/script/import_scripts/mbox/importer.rb:91:in `import_posts'
/var/www/discourse/script/import_scripts/mbox/importer.rb:35:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
script/import_scripts/mbox.rb:16:in `\u003cmodule:Mbox\u003e'
script/import_scripts/mbox.rb:10:in `\u003cmodule:ImportScripts\u003e'
script/import_scripts/mbox.rb:9:in `\u003cmain\u003e'
2328 / 2333 (99,8%) [467 itens/min]
Atualizando status do tópico
Atualizando bumped_at nos tópicos
Atualizando last posted at nos usuários
Atualizando last seen at nos usuários
Atualizando contagem de respostas dos tópicos...
70 / 70 (100,0%) [10745 itens/min]
Atualizando first_post_created_at...
Atualizando user post_count...
Atualizando user topic_count...
Atualizando usuários dos tópicos
Atualizando timings dos posts
Atualizando usuários de tópicos em destaque
Atualizando tópicos em destaque nas categorias
9 / 9 (100,0%) [2505 itens/min] n]
Atualizando contagem de respostas de tópicos dos usuários
70 / 70 (100,0%) [9174 itens/min] ]
Resetando contadores de tópicos
Concluído (00h 06min 58s)
Então, deixei isso prosseguir (vou analisar os erros mais tarde), mas agora tenho uma peculiaridade bastante grande. Tentei importar esses arquivos para uma pasta chamada “old-yahoo-group”, criando primeiro essa CATEGORIA no sistema e depois movendo todas as pastas mbox para um diretório aqui:
/var/discourse/shared/standalone/import/data/old-yahoo-group
Acreditei ter entendido as instruções de modo que essas mensagens, ao serem importadas, apareceriam na categoria apropriada. No entanto, elas estão todas ocultas no sistema.
Posso fazer uma busca e encontrar as mensagens antigas sem problemas, mas elas não aparecem em nenhum local agregado.
Como posso manipular essa última importação para que vá para uma categoria definida, de modo que todos os ~35 mil mensagens apareçam em uma seção conveniente que indique que são mensagens antigas?
Ao investigar mais, parece que descobri o que aconteceu:
Agora preciso descobrir como me recuperar disso…
Então, isso funcionou perfeitamente (onde old-yahoo-group já havia sido criado e NÃO havia nenhuma outra postagem sem categoria (e ela estava realmente desativada nas Configurações)):
/var/discourse/launcher enter app
rails c
un=Category.find_by_slug('uncategorized')
newcat=Category.find_by_slug('old-yahoo-group')
Topic.where(category_id: un.id).update_all(category_id: newcat.id)
Por acaso, tive uma experiência semelhante. Por algum motivo, o script de importação ignorou a categoria existente que eu havia criado, mesmo que o slug fosse o mesmo. Mas ele criou uma nova categoria para mim, então não tive problemas. Apenas excluí a categoria que eu havia criado e renomeei a categoria criada pelo script.