# Migrate a phpBB3 forum to Discourse

**URL:** https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810
**Category:** Migrating to Discourse
**Tags:** how-to
**Created:** [05.Июль.2015 22:02:57 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810 "2015-07-05T22:02:57Z")
**Posts on this page:** 20
**Page:** 12

<div class="post-metadata">

### Author: ![fallais](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fallais/32/175780_2.png) [@fallais](https://meta.discourse.org/u/fallais)
#### Post date: [06.Апрель.2020 14:07:03 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/543 "2020-04-06T14:07:03Z")

</div>

@gerhard: Могу ли я выполнить очистку некорректных кодировок символов после миграции с помощью Sidekiq? Я очень новичок в Discourse, поэтому, возможно, не до конца понимаю, как это работает.  
Или, может быть, лучше использовать SQL-скрипт напрямую в MariaDB?

Огромное спасибо!

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [06.Апрель.2020 14:15:15 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/544 "2020-04-06T14:15:15Z")

</div>

> [@fallais](#):
>
> Могу ли я добиться очистки некорректных символов кодировки после миграции с помощью Sidekiq? Я

Конечно! Вы также можете просто отредактировать каждый пост вручную. В 10 раз проще сделать это заранее, когда есть возможность начать всё сначала.

Я перепробовал множество способов исправить кодировку на стороне MariaDB, но так и не нашёл решения. Вот код, который я использовал для исправления кодировки при импорте, над которым сейчас работаю.

```ruby
    ### Кодировка WIN1252
    win_encoded = ''
    begin
      win_encoded = raw.force_encoding('utf-8').encode("Windows-1252",
                            invalid: :replace, undef: :replace, replace: ""
                           ).force_encoding('utf-8').scrub
    rescue => e
      puts "\n#{'-'*50}\nWin1252 не удался для \n\n#{raw}\n\n"
      win_encoded = ''
    end

```

---

<div class="post-metadata">

### Author: ![fallais](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fallais/32/175780_2.png) [@fallais](https://meta.discourse.org/u/fallais)
#### Post date: [06.Апрель.2020 14:18:26 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/545 "2020-04-06T14:18:26Z")

</div>

Отлично, спасибо 🙂

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [06.Апрель.2020 14:21:16 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/546 "2020-04-06T14:21:16Z")

</div>

Это был болезненный опыт. Я пробовал несколько кодировок и включил их несколько в пост, чтобы мог их сравнить. Эта, похоже, решила большинство проблем в большинстве случаев. Мне потребовалось гораздо больше времени, чем хотелось бы, чтобы разобраться с `.scrub`, так как без него я получал строки, которые больше нельзя было обработать с помощью `gsub`.

---

<div class="post-metadata">

### Author: ![helmi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/helmi/32/114772_2.png) [@helmi](https://meta.discourse.org/u/helmi)
#### Post date: [21.Апрель.2020 17:33:07 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/547 "2020-04-21T17:33:07Z")

</div>

У кого-то уже есть хорошее решение для импорта вложенных списков из phpBB?

Я недостаточно хорошо знаю Ruby, чтобы понять, как к этому подступиться — сижу над этим:

```plaintext
 def process_lists(text)
      # convert list tags to ul and list=1 tags to ol
      # list=a is not supported, so handle it like list=1
      # list=9 and list=x have the same result as list=1 and list=a
      text.gsub!(/\[list\](.*?)\[\/list:u\]/mi) do
        $1.gsub(/\[\*\](.*?)\[\/\*(:m)?\]\n*/mi) { "* #{$1}\n" }
      end
      text.gsub!(/\[list=.*?\](.*?)\[\/list:o\]/mi) do
        $1.gsub(/\[\*\](.*?)\[\/\*(:m)?\]\n*/mi) { "1. #{$1}\n" }
      end
    end

```

У кого-то есть идея, как может выглядеть «циклирование» по вложенному списку?

Вот пример BBCode:

```plaintext
[list]
   [*]
   [list=a]
      [*]a
      [*]b
      [*]c
      [*]d
      [*]e
   [/list]
   [*]outer list
[/list]

```

---

<div class="post-metadata">

### Author: ![neounix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neounix/32/215617_2.png) [@neounix](https://meta.discourse.org/u/neounix)
#### Post date: [22.Апрель.2020 01:49:23 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/548 "2020-04-22T01:49:23Z")

</div>

@helmi

Посмотрел ли ты, как этот официальный плагин для Discourse может помочь тебе с тегами LIST?

> [@Discourse BBCode](https://meta.discourse.org/t/discourse-bbcode/65425):
>
> information_sourceSummary Discourse BBCode adds the ability to use BBCode to format posts.discourse2Hosted by us? This plugin is available on our Enterprise plansmechanicSelf-host Install [Install plugins on a self-hosted site](https://meta.discourse.org/t/install-plugins-on-a-self-hosted-site/19157)hammer_and_wrenchRepository Link [https://github.com/discourse/discourse-bbcode](https://github.com/discourse/discourse-bbcode) The Discourse BBCode plugin enhances the Markdown composer [[1]](#footnote-304175-1) with support for the [BBCode syntax](https://www.bbcode.org/reference.php) beyond what is included by default (i.e. [i], [b], [s], [u], […

---

<div class="post-metadata">

### Author: ![helmi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/helmi/32/114772_2.png) [@helmi](https://meta.discourse.org/u/helmi)
#### Post date: [22.Апрель.2020 07:55:01 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/549 "2020-04-22T07:55:01Z")

</div>

> [@neounix](#):
>
> Вы смотрели, как этот официальный плагин для дискурса может помочь вам с тегами LIST?

Я пока не смотрел, но посмотрю, спасибо. Хотя я стараюсь избегать его использования, так как не хочу в долгосрочной перспективе поддерживать дополнительные BB-теги — мне гораздо удобнее конвертировать всё при импорте. Вложенные списки не являются критичной проблемой, но было бы здорово их иметь.

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [22.Апрель.2020 08:52:25 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/550 "2020-04-22T08:52:25Z")

</div>

Вы можете создать резервную копию, обновиться до phpBB 3.2 и использовать мою экспериментальную ветку. Она обеспечивает значительно лучшую поддержку BBCodes. 😉

> [@Migrate a phpBB3 forum to Discourse](https://meta.discourse.org/t/importing-from-phpbb3/30810/534?u=gerhard):
>
> @TBauer seems to be using [this experimental branch](https://github.com/gschlager/discourse/tree/phpbb3), so I guess this is fine. It’s still not supported, but I’d like to know what’s causing this error anyway. @TBauer could you please send me the content of the post\_text column in the phpbb\_posts table for post with ID 14742 in a PM or post it here? I’m guessing you recently upgraded to phpBB 3.2 and it hasn’t finished converting the old BBCode format to the new one. That’s why it might fail after 2800 posts. If that’s the case, you might want …

---

<div class="post-metadata">

### Author: ![helmi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/helmi/32/114772_2.png) [@helmi](https://meta.discourse.org/u/helmi)
#### Post date: [22.Апрель.2020 09:02:09 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/551 "2020-04-22T09:02:09Z")

</div>

> [@gerhard](#):
>
> Вы могли бы создать резервную копию, обновиться до phpBB 3.2 и использовать мою экспериментальную ветку. В ней значительно улучшена поддержка BB-кодов. 😉

Это звучит интересно, но я бы не хотел больше возиться с phpBB. Помимо списков, процесс импорта уже в значительной степени автоматизирован. Это, пожалуй, отбросило бы нас назад и потребовало бы дополнительной работы и тестирования. Но приятно видеть, что прогресс в версии 3.2 движется успешно.

---

<div class="post-metadata">

### Author: ![neounix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neounix/32/215617_2.png) [@neounix](https://meta.discourse.org/u/neounix)
#### Post date: [22.Апрель.2020 10:21:51 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/552 "2020-04-22T10:21:51Z")

</div>

> [@helmi](#):
>
> Я пока не пробовал, но попробую, спасибо. Хотя я стараюсь избегать этого, так как не хочу в долгосрочной перспективе поддерживать дополнительные BB-теги — мне гораздо лучше было бы конвертировать всё при импорте. Вложенные списки не являются критичной проблемой, но было бы здорово их иметь.

Привет, @helmi

Да, мы уже месяц боремся с подобными проблемами, мигрируя устаревший форум vB3 с почти двадцатилетней историей самых разных причудливых применений BBCode: вложенности, встраивания и так далее.

Довести такую миграцию до 99,9% идеальности — задача нетривиальная. Например, мы написали код на Ruby, чтобы удалять все BB-теги из наших блоков кода, так как Markdown «не любит» BBCode внутри блоков с ограничителями.

С нашей стороны мы всё ещё завершаем множество процедур предварительной обработки на Ruby, и мы всё ближе и ближе к цели, но мы никогда не достигнем «идеала» или «100%» при миграции почти двадцатилетних постов от очень креативных пользователей BBCode (не говоря уже о тех, кто просто копировал и вставлял текст в посты и так далее…)

Мы всё ещё работаем над устранением проблем, связанных с конвертацией BBCode в Markdown.

Иногда мне хочется просто «выкинуть всё это прочь»… LOL

---

<div class="post-metadata">

### Author: ![helmi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/helmi/32/114772_2.png) [@helmi](https://meta.discourse.org/u/helmi)
#### Post date: [24.Апрель.2020 08:08:32 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/553 "2020-04-24T08:08:32Z")

</div>

Похоже, у нас всё ещё возникают проблемы с изменением имён пользователей или их полным отсутствием при импорте, если они содержат специальные символы.

Есть ли известные проблемы с импортером, или я неправильно настроил опцию поддержки юникодных имён пользователей в Discourse? Я её включил, но белый список всё ещё содержит умлауты. Нужно ли мне удалить белый список, чтобы разрешить все символы юникода, или же мне нужно перечислить все символы вручную? Мне казалось, что включение поддержки юникода разрешает все символы юникода, а отключение — разрешает только те, что указаны в белом списке.

При импорте некоторые символы, например @ или \*, заменяются на \_ — я могу понять, почему @ может вызывать проблемы с упоминаниями (@mention), но… Я просто хотел убедиться, прежде чем вручную обрабатывать всех этих пользователей перед импортом (что было бы большой головной болью).

Есть ли какие-либо подсказки по этому поводу?

С уважением,  
Франк

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [24.Апрель.2020 08:38:05 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/554 "2020-04-24T08:38:05Z")

</div>

Даже при включении поддержки Unicode система по-прежнему допускает только буквы и цифры. См. [Unicode usernames and group names](https://meta.discourse.org/t/unicode-usernames-and-group-names/117737?u=gerhard)

---

<div class="post-metadata">

### Author: ![bkuntz](https://avatars.discourse-cdn.com/v4/letter/b/d78d45/32.png) [@bkuntz](https://meta.discourse.org/u/bkuntz)
#### Post date: [26.Апрель.2020 12:36:43 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/555 "2020-04-26T12:36:43Z")

</div>

Здравствуйте,

Прежде всего, спасибо за всю документацию и помощь в этой теме.  
Я только что импортировал старый форум phpBB3 в совершенно новый Discourse.

Всё прошло довольно гладко с 200 тысячами сообщений и 20 тысячами вложений, но Sidekiq немного затруднялся с обработкой всего после импорта.

Теперь я столкнулся с новой проблемой: изображения, которые были вложены в теги ссылок, выглядят следующим образом:  
`[url=http://www.casimages.com][img]http://nsm01.casimages.com/img/2009/04/24//090424092900546293539010.jpg[/img][/url]`

После импорта (преобразования bbcode в markdown) эти изображения отображаются просто как ссылки:  
`[nsm01.casimages.com/img/2009/04/24//090424092900546293539010.jpg](http://www.casimages.com)`

Есть ли способ обработать/перекомпилировать эти ссылки так, чтобы они отображались как изображения и автоматически загружались в S3?

Заранее спасибо за помощь.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [26.Апрель.2020 12:53:55 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/556 "2020-04-26T12:53:55Z")

</div>

В системных настройках найдите «download remote»

ИСПРАВЛЕНИЕ: Ой. Похоже, это была не ваша проблема. Извините.

---

<div class="post-metadata">

### Author: ![bkuntz](https://avatars.discourse-cdn.com/v4/letter/b/d78d45/32.png) [@bkuntz](https://meta.discourse.org/u/bkuntz)
#### Post date: [26.Апрель.2020 13:08:43 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/557 "2020-04-26T13:08:43Z")

</div>

@pfaffman

Спасибо, Джей. Да, я уже включил настройку «загружать удалённые». Моя проблема в том, что эти изображения отображаются как ссылки (и URL изображения — это лишь «отображаемая часть» ссылки, а целевой адрес не соответствует содержимому изображения).

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [28.Май.2020 08:43:08 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/558 "2020-05-28T08:43:08Z")

</div>

Привет,

У меня сейчас есть форум, импортированный из phpBB.  
Я думаю о том, чтобы импортировать ещё один форум phpBB (36 000 сообщений, 230 участников) в мою существующую установку Discourse. У них есть общие категории и пользователи.

Учётные записи пользователей можно будет объединить вручную.  
Что касается сообщений, то после импорта их можно будет вручную переместить в существующие категории.

Сработает ли это «из коробки» с помощью скрипта импорта или всё превратится в хаос?

Что произойдёт, если я импортирую форум phpBB, и некоторые адреса электронной почты пользователей уже существуют в моём текущем Discourse?

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [29.Май.2020 22:14:42 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/559 "2020-05-29T22:14:42Z")

</div>

Вам нужно очистить пользовательские поля `import_id`, иначе новые посты будут считаться уже импортированными.

Это звучит как задача, с которой вы столкнётесь при частой настройке локальной установки, используя резервную копию вашей основной базы данных.

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [29.Май.2020 22:25:28 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/560 "2020-05-29T22:25:28Z")

</div>

Спасибо за эту ценную информацию, о которой я не подумал 👍🏿  
Да, я сделаю это и попробую на тестовом сервере, чтобы проверить, как это можно реализовать.

О контексте:

Я хосту национальный форум Discourse о велосипедном спорте (с одним колесом).  
Также я хосту форум phpBB для местной ассоциации велосипедистов.  
Оба форума имеют общих пользователей, а некоторые темы или обсуждаемые вопросы дублируются. Идея заключается в том, чтобы объединить форум местной ассоциации с национальным форумом, чтобы устранить дублирование тем, и создать группу или категорию для тем, связанных с местной ассоциацией.

Кроме того, пользователи, которые находятся только на форуме местной ассоциации, присоединятся к национальному форуму, и это, возможно, повысит активность.

---

<div class="post-metadata">

### Author: ![helmi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/helmi/32/114772_2.png) [@helmi](https://meta.discourse.org/u/helmi)
#### Post date: [16.Июнь.2020 15:32:57 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/561 "2020-06-16T15:32:57Z")

</div>

У кого-нибудь есть идея, почему MySQL не запускается в контейнере импорта?

Я уже провёл несколько запусков, и всё всегда работало, но теперь получаю:

`Can't connect to local MySQL server through topic:30810`

Как только я пытаюсь запустить импорт. Перепроверил всё несколько раз, несколько раз пересобрал контейнер импорта. Всё на месте, но MySQL, похоже, не запущен. ☹

Я немного в ужасе, ведь это наш реальный переход на Discourse сегодня.

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [16.Июнь.2020 15:36:29 UTC](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810/562 "2020-06-16T15:36:29Z")

</div>

> [@helmi](#):
>
> тема:30810

❓ ❓❓ Это выглядит странно. Откуда это взялось?

[Previous page](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810.md?page=11)

[Next page](https://meta.discourse.org/t/migrate-a-phpbb3-forum-to-discourse/30810.md?page=13)
