MYSQL UPDATE REPLACE с регулярными выражениями

5837
0

Сегодня рассмотрим такую интересную задачу как замена в базе данных MYSQL по регулярному выражению. Когда возникает такая задача? Как ее решить? разберемся вместе.

Когда требуется использовать замену в базе данных MYSQL

Например, когда у вас в блоге несколько тысяч записей то заменить какой то старый код на новый или добавить картинке определенный класс становится очень проблематично. Некоторые задачи например замена определенной фразы на другу можно выполнить довольно легко. Достаточно выполнить следующий запрос (можно прямо из phpmyadmin) желательно к тестовый базе что бы протестировать результат.

Что бы сделать тестовую базу для Wodpress достаточно:
1. Создать новую базу данных, имеющимися у Вас средствами администрирования или из консоли
2. Выгрузить дамп существующей базы данных через ssh

3. Загрузить дамп во вновь созданную тестовую базу данных

Теперь осталось в файле конфигурации блога wp-config.php прописать нужную тестовую базу данных и тестировать на ней с заменами.

Производим замены в базе данных MYSQL

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

Такой запрос добавит класс «test» к каждому изображению в теле записи, однако если требуется искать например только изображения находящиеся внутри ссылок то такой метод не подойдет и тут можно сделать следующее:
1. Делаем дамп базы данных (см. Выше)
2. Скачиваем его себе на компьютер
3. Открываем в любом редакторе как текстовый файл, главное что бы он поддерживал поиск и замену по регулярному выражению
4. Производим замену
5. Заливаем дамп базы данных обратно на сервер и загружаем его в тестовую базу данных
6. Тестируем и в случае если все в норме — загружаем его в рабочую базу данных
7. Меняем настройки в wp-config.php обратно

Если знаете другие более эффективные способы — пишите в комментариях, очень пригодится всем.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here