Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

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

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



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

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

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

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

Вот и всё! =)

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

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

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Log in to comment

Обсуждение этой статьи

ИНФОРМАЦИЯ: Вы оставите комментарий к этой статье как 'Гость'