Массовая замена в mysql

Массовая замена в mysql

Если встала необходимость заменить какой-либо текст в таблице MySQL, это можно сделать очень просто

1 Способ

UPDATE `table` SET `column` = REPLACE( column, ‘search’, ‘replace’ ) ;

В этом коде заменяем table на название таблицы, column на название колонки, search — искомый текст, replace — текст, на котороый будем замещать.
Так же в запрос можно добавить какое-либо условие WHERE.

2 Способ

Сделать дамп базы, сделать реплейс любой программой, например внутренним редактором менеджера Far, а потом залить базу обратно… Для безопасно быстрого бэкапа и восстановления базы рекомендую использовать Sypex Dumper бесплатную версию.

И полный синтаксис команды REPLACE

REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name. )] VALUES (expression. ),(. ). или REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name. )] SELECT . или REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name SET col_name=expression, col_name=expression.

Оператор REPLACE работает точно так же, как INSERT, за исключением того, что если старая запись в данной таблице имеет то же значение индекса UNIQUE или PRIMARY KEY, что и новая, то старая запись перед занесением новой будет удалена.

Другими словами, команда REPLACE не предоставляет доступа к замещаемой записи. В некоторых старых версиях MySQL такой доступ иногда оказывался возможным, но это был дефект, который уже исправлен.

Для использования REPLACE у вас должны быть привилегии INSERT и DELETE для таблицы.

При использовании команды REPLACE функция mysql_affected_rows() вернет значение, равное 2, если старая строка была заменена новой. Объясняется это тем, что в таблицу вставляется строка после того, как удаляется дубликат.

Это позволяет легко определять, какое действие произвела команда REPLACE — добавление или замещение строки. Достаточно просто проверить, какое число вернула функция mysql_affected_rows() — 1 (строка добавлена) или 2 (замещена).

Читайте также:  Excel ширина ячейки по содержимому

Следует учитывать, что, если не используются индексы UNIQUE или PRIMARY KEY, то применение команды REPLACE не имеет смысла, так как она работает просто как INSERT.

Полезные команды по замене данных и текста в MySQL, которые выполняются в phpMyAdmin с помощью SQL-запросов к базе данных. Команды используются для массовой замены данных в WordPress.

Команда замены в таблицах MySQL

Универсальный пример

Массовая замена текста в записях (статьях) WordPress

Пример. Как-то мне понадобилось заменить во всех текстах тег blockquote на теги div. Для этого потребовалось ввести следующую команду.

‘);
UPDATE wp_posts SET post_content = REPLACE (post_content, ‘

Замена путей для изображений в MySQL

Массовая замена (изменение) имени автора в WordPress

У вас могут быть и другие таблицы, где фигурирует ваше имя. Нужно смотреть по плагинам, где используются имя автора блога (или любой другой). Например, в примере ниже меняется автор во всех комментариях, рейтингах и некоторых других таблицах.

Замена произвольных полей в MySQL

Для замены произвольного поля ‘premiere_ru’ в таблице wp_postmeta, где значения «—» нужно поменять на пустые:

Как сделать выборку незаполненных произвольных полей

Это удобно делать, когда нужно массово заполнить произвольные поля к разным записям одновременно.

В примере ниже выведем в таблице wp_postmeta, произвольное поле premiere, которое является пустым.

Скриншот из программы Sequel Pro при подобной выборке:

Разновидность запроса, которая также выведет незаполненные поля:

Как вывести пустое значение произвольного поля, если оно не задано вообще, я пока не понял, но можно использовать запрос wp_query для вывода постов.

Массовая замена URL сайта на WordPress

Полезные команды, когда нужно сменить адрес сайта на WordPress в базе данных MySQL. Обычно пригождается, когда переносится база данных с тестового сайта на рабочий URL.

Читайте также:  Tplinklogin net войти admin

UPDATE wp_options SET option_value = REPLACE(option_value, ‘http://localhost:8888/ploshadka.net’, ‘https://ploshadka.net’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘http://localhost:8888/ploshadka.net’, ‘https://ploshadka.net’);

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, ‘http://localhost:8888/ploshadka.net’, ‘https://ploshadka.net’);

UPDATE wp_posts SET gu ;

Замена URL сайта для WordPress на localhost

В обратном случае, при переносе сайта с удаленного сервера на локальный веб-сервер:

UPDATE wp_options SET option_value = REPLACE(option_value, ‘https://ploshadka.net’, ‘http://localhost:8888/ploshadka.net’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘https://ploshadka.net’, ‘http://localhost:8888/ploshadka.net’);

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, ‘https://ploshadka.net’, ‘http://localhost:8888/ploshadka.net’);

UPDATE wp_posts SET gu ;

Вместо моего сайта поставьте свой.

Замена старых URL на новые

Меняем старые ссылки в записях, в комментариях и настройках. В результате старый URL останется только в таблице wp_postmeta поля meta_key в качестве старого слага (_wp_old_slug). Пусть хранится на всякий случай, это никак не мешает работе сайта. Наоборот, будет переадресация в случае чего.

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘https://ploshadka.net/old_url/’, ‘https://ploshadka.net/new-url/’);

UPDATE wp_comments SET comment_content = REPLACE (comment_content, ‘https://ploshadka.net/old_url/’, ‘https://ploshadka.net/new-url/’);

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, ‘https://ploshadka.net/old_url/’, ‘https://ploshadka.net/new-url/’);

Очистка WordPress от ревизий

И полезная команда по очистке лишних ревизий в WordPress.

Не работают запросы SQL

Бывает, вы вводите правильные запросы SQL, запускаете их и ничего не меняется. Результат пишется, что изменено 0 строк. В этом случае попробуйте переписать под копирку запросы на клавиатуре. По каким-то причинам в результате копирования иногда запросы могут не работать. Возможно вставляется не тот апостроф или может какой ещё невидимый атрибут/символ.

Иногда требуется заменить/удалить группу символов(текст) в базе данных. В этой статье будет рассмотренно как быстро покончить с этой неприятной и почти всегда объемной задачей.

Читайте также:  Powershell символ переноса строки

Для того чтобы массово заменить текст в базе нужно обратиться к вашему инструменту администрирования MySQL. Мы будем рассматривать пример PHPMyAdmin, но в Adminer все выглядит практически так же. После того как вы оказались PHPMyAdmin вам нужно выбрать базу в которой нужно произвести замену и выбрать вкладку SQL, в которой мы будем писать запросы к базе :

После этого напишем наш запрос:

= REPLACE ( text , ‘старое слово’ , ‘новое слово’ ) ;

  • mytable — имя таблицы в которой будет производиться замена;
  • text — поле таблицы, где будет проводиться замена текста;
  • старое слово — то что заменяем;
  • новое слово — то на что заменяем;
  • UPDATE — оператор языка SQL, позволяющий обновить значения в указанных полях таблицы;
  • SET — это выражение является частью оператора UPDATE, которое указывает какие именно поля следует изменить.

После того как запрос написан, следует нажать на кнопку в правом нижнем углу окна запросов:

Перед тем как делать запросы к базе данных, обязательно сделайте бекап.

Ссылка на основную публикацию
Adblock detector