Массовая замена текста по всей базе данных MySQL по всему сайту в phpMyAdmin

В этой статье рассмотрим, как сделать однотипную массовую замену в базе данных сайта с помощью SQL-запроса. Это позволит быстро поменять все без исключения ссылки, например при смене папки или при создании нового меню. Также это может потребоваться при смене названия компании. чтобы не проверять и не вычитывать каждую статью на сайте и не вылавливать по одной ссылке. Для того, чтобы обратиться к MySQL-серверу проще всего воспользоваться бесплатной программой phpMyAdmin, которая присутствует почти на любом сервере, на котором установлен MySQL-сервер.

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



SQL-запрос замены одного текстового фрагмента на другой

Сначала приведу общий синтаксис SQL-запроса, который позволяет сделать замену одного текста на другой. Ниже будет пример.

SQL-запрос замены одного текстового фрагмента на другой в общем случае выглядит следующим образом:

UPDATE `table` SET `column-1` = REPLACE( `column-1`, 'search-1', 'replace-1' ), `column-N` = REPLACE( `column-N`, 'search-N', 'replace-N' ) WHERE 1

Что есть что:

  • Команды и функции:
    • UPDATE — команда редактирования записей в таблицах базы данных
    • SET — в данном случае команда объявления таблицы, с которой будут производится операции поиска и замены
    • REPLACE — заменяет в строке column  все вхождения search на replace
    • WHERE — служит для задания дополнительного условия выборки, операций вставки, редактирования и удаления записей. В нашем случае = 1, поэтому замена будет сквозная, то есть при любом совпадении текста со строкой search, она буден заменена на строку replace.

Как видно, в один SQL-запрос можно вставлять несколько значений замены по разным записям column таблицы table.

Пример SQL-запроса замены одного фрагмента URL на другой в БД Joomla

У меня стояла задача: поменять все ссылки, которые есть в тексте всех статей сайта потому, что я сделал новый пункт меню и URL статей поменялись. А все ссылки в статьи я вставляю вручную. Поэтому пришлось бы открывать каждую статью, где встречается ссылка на этот пункт меню и заменять URL вручную. Однако, сформировав запрос:

UPDATE `joomla_content` SET `introtext` = REPLACE( `introtext`, 'cms/joomla/70-nextend.html', 'cms/joomla/nextend.html' ), `fulltext` = REPLACE( `fulltext`, 'cms/joomla/70-nextend.html', 'cms/joomla/nextend.html' ) WHERE 1
UPDATE `joomla_categories` SET `description` = REPLACE( `description`, 'cms/joomla/70-nextend.html', 'cms/joomla/nextend.html' ) WHERE 1

Я за секунду поменял все ссылки во всех статьях. Как это произошло?

Я знаю, что все статьи хранятся в таблице joomla_content. Причём только в двух записях: introtext — в ней хранится вступительная часть статьи и fulltext — в ней хранится то, что следует после Read more.

А все описания категорий хранятся в таблице joomla_categories в поле description.

Данный запрос заменит то, что нужно было: текст в URL с cms/joomla/70-nextend.html на cms/joomla/nextend.html, что и отображено в запросе.

Вот и всё! =)

В заключение...

Для тех, кто редко пользуется прямыми SQL-запросами к базе данных сайта, я рекомендую сделать бамп базы данных, чтобы, если что-то пойдёт не так, откатить БД в начальное состояние. От бэкапа ещё никто не умирал. =D

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню