Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

SQL запрос на массовую замену части текста в постах

Вопросы без привязки к версии. Установлена авточистка (2 года).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
vovannn
phpBB 1.0.0
Сообщения: 9
Стаж: 7 лет 2 месяца
Благодарил (а): 2 раза

SQL запрос на массовую замену части текста в постах

Сообщение vovannn »

Здравствуйте, кто может подсказать, можно ли через SQL запрос произвести массовую замену ЧАСТИ текста, например: заменить 'http:/site.ru/...' на 'http:/site.com/...', имею ввиду, что нужно заменить именно часть адреса, т. к. адресов много и они все разные, по сути нужно заменить лишь домен.

Я знаю как заменить отдельное выражение в постах, но оно не годится:

Код: Выделить всё

UPDATE phpbb_posts SET post_text = REPLACE (post_text, 'site.ru', 'site.com')
Последний раз редактировалось Sheer 09.04.2018 1:15, всего редактировалось 1 раз.
Причина: bb-код. Когда же вы наконец научитесь пользоваться bb-кодами!!!
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение Siava »

Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
vovannn
phpBB 1.0.0
Сообщения: 9
Стаж: 7 лет 2 месяца
Благодарил (а): 2 раза

Re: SQL запрос на массовую замену части текста в постах

Сообщение vovannn »

Код: Выделить всё

UPDATE phpbb_posts
SET post_text = REPLACE(post_text, 'http://www.myserver.yy', 'https://www.myserver.yy')
WHERE post_text LIKE '%http://www.myserver.yy%';
выдает:

Код: Выделить всё

#1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около ''http&#58)' на строке 1
Последний раз редактировалось Sheer 09.04.2018 1:16, всего редактировалось 1 раз.
Причина: bb-код
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение Siava »

Странно, я таким запросом выполнял автозамену.
Можно ещё попробовать одинарные кавычки такими заменить `
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Perfecthus
phpBB 2.0.10
Сообщения: 799
Стаж: 13 лет 5 месяцев
Откуда: Оттуда
Благодарил (а): 63 раза
Поблагодарили: 89 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение Perfecthus »

Такие кавычки ` и нужны в запросе, как Siava, написал.
Аватара пользователя
Perfecthus
phpBB 2.0.10
Сообщения: 799
Стаж: 13 лет 5 месяцев
Откуда: Оттуда
Благодарил (а): 63 раза
Поблагодарили: 89 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение Perfecthus »

vovannn, для примера:

Код: Выделить всё

UPDATE `pref_posts` SET `poster_ip` = "78.40.80.50" WHERE `poster_ip` = "52.28.136.71" AND `poster_id` = 62;
Дальше сам разберёшься, по-анологии. ;)
vovannn
phpBB 1.0.0
Сообщения: 9
Стаж: 7 лет 2 месяца
Благодарил (а): 2 раза

Re: SQL запрос на массовую замену части текста в постах

Сообщение vovannn »

Спасибо конечно, но я в этом полный ноль :(
Perfecthus писал(а): 09.04.2018 19:55 UPDATE `pref_posts` SET `poster_ip` = "78.40.80.50" WHERE `poster_ip` = "52.28.136.71" AND `poster_id` = 62;
Попробовал сделать по старинке - выгрузил базу данных, отредактировал все что нужно на компьютере, чтобы не рисковать не удалял старую бд, а создал вторую, залил туда отредактированную базу, подключил ее к форуму через confing, очистил кэш и все, ничего не изменилось... Что я сделал не так?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение Siava »

vovannn писал(а): 09.04.2018 20:32 отредактировал все что нужно на компьютере
Вы автозаменой прошлись?
Там же в базе, в текстах сообщений адреса именно в таком формате: www.myserver.yy, а не www.myserver.yy
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
vovannn
phpBB 1.0.0
Сообщения: 9
Стаж: 7 лет 2 месяца
Благодарил (а): 2 раза

Re: SQL запрос на массовую замену части текста в постах

Сообщение vovannn »

Да, все оказалось сложнее чем я думал...

Вроде получилось, спасибо огромное всем откликнувшимся!

Только после всех моих манипуляций база данных зжалась на 24%, это нормально?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение Siava »

vovannn писал(а): 09.04.2018 22:07 база данных зжалась на 24%
Если таблицы в myisam, то такое может быть.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 158
Стаж: 7 лет 10 месяцев
Откуда: Караганда
Благодарил (а): 24 раза
Поблагодарили: 15 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение Kuskow »

Вот и меня дёрнул за ногу сделать UPDATE phpbb_posts SET post_text=....
И вроде бы поначалу было всё чётко, открывал в редактировании некоторые сообщения - они нормально открывались. А вот оказалось, что целостность текста порушена, и теперь при просмотре страниц темы с изменёнными сообщениями phpBB вылетает с ошибкой 500, не показывая, где случилась ошибка, естественно. Конкретно делал автозамену в [url=адрес]текст[/url].

Сделать откат базы данных не вариант - после того пользователи накатали уже кучу сообщений. Может быть, теперь не совпадает post_checksum - тогда как запустить её пересчёт? Или вообще что можно ещё сделать?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение rxu »

Kuskow писал(а): 15.06.2020 17:21 Может быть, теперь не совпадает post_checksum
Это не приведет к ошибке 500.
Изображение
Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 158
Стаж: 7 лет 10 месяцев
Откуда: Караганда
Благодарил (а): 24 раза
Поблагодарили: 15 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение Kuskow »

Значит не post_checksum. Кажется, порушены получились bb-коды. Вот тут нашёл кое-что Re: база данных - мне тоже надо это сделать теперь?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение rxu »

Можно и так, и можно через командную строку

Код: Выделить всё

php bin/phpbbcli.php reparser:reparse post_text
Изображение
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11234
Стаж: 14 лет 2 месяца
Откуда: fotovideoforum.ru
Благодарил (а): 1782 раза
Поблагодарили: 1340 раз
Контактная информация:

Re: SQL запрос на массовую замену части текста в постах

Сообщение Пчелкин »

Феноменально! А если старый сервак с пхп до 5-ки и сервак с БД без i ?
Ответить

Вернуться в «phpBB-пространство»