MySQL/MariaDB: REPLACE – рекурсивное обновление записей в таблице

Автор: | 18/02/2016
 

mariadb_logoВ некоторых постах когда-то пролезла гадость, вписавшая ссылки в код, скрытый между <code></code>.

Выглядело это примерно так:

Screen Shot 2016-02-16 at 10.48.33


Находим все затронутые посты.

TEXT тут:

%<script src=”//shareup.ru/social.js” type=”text/javascript”></script>%

Не вписываю в сам запрос, что бы не плодить ссылок дальше.

Выполняем:

MariaDB [rtfm_db1]> select post_title from db1_posts where post_content like 'TEXT';
+----------------------------------------------------------------------------------------------------------------------------+
| post_title                                                                                                                 |
+----------------------------------------------------------------------------------------------------------------------------+
| FreeBSD: ????????? ? ????????? Postfix Admin                                                                               |
...
| MariaDB/MySQL: general_log - ???????????? ???? ????????                                                                    |
+----------------------------------------------------------------------------------------------------------------------------+
154 rows in set (0.06 sec)

Бекапим базу:

$ mysqldump -u root -p rtfm_db1 > rtfm_db1_bkp_61_02_2016.sql
Enter password: 

Запишем запрос его в файл:

$ cat cleanup_rtfm.sql 
USE rtfm_db1;

UPDATE db1_posts SET post_content = REPLACE(post_content, 'TEXT', '') WHERE post_content LIKE 'TEXT';

Запускаем файл на выполнение MariaDB:

$ mysql -u root -p rtfm_db1 < cleanup_rtfm.sql 
Enter password: 

Проверяем еще раз:

MariaDB [rtfm_db1]> select post_title from db1_posts where post_content like 'TEXT';
+------------------+
| post_title       |
+------------------+
| mysql file clean |
+------------------+
1 row in set (0.06 sec)

mysql file clean” – это заголовок черновика поста, который сейчас и пишется.

Готово.

Ссылки по теме

http://dev.mysql.com