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

22
задан barfoon 7 May 2009 в 17:47
поделиться

7 ответов

Грубый (но эффективный) способ сделать это состоял бы в том, чтобы выгрузить схему в файл, тщательно применить поиск и замену и затем повторно импортировать.

На самом деле я сделал это сегодня:)

39
ответ дан cherouvim 29 November 2019 в 03:36
поделиться

Наткнулся на это в поиске Google, но это может помочь некоторым людям. Если вы знаете таблицы и столбцы (вы можете найти это с помощью поиска по шаблону в phpMyAdmin),

ОБНОВЛЕНИЕ имя_таблицы SET имя_ столбца = ЗАМЕНА ( column_name , ' http://oldsite.com ', ' http://newsite.com ');

Заменить выделите жирным шрифтом вместе со своими.

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

17
ответ дан Thiem Nguyen 29 November 2019 в 03:36
поделиться

Ваш вопрос был опубликован в 2009 году, и в течение этого года другой парень разработал базовый инструмент php для поиска строки во всех таблицах определенной базы данных. При желании вы также можете заменить все его вхождения другой строкой.

Тем не менее, через 5 лет (на момент написания статьи) использование этого инструмента против установки Wordpress является эффективным и, на мой взгляд, намного проще, чем использование дампа mysql (хотя, возможно, вы захотите создать дамп до запуска скрипта). для целей резервного копирования).

Более подробную информацию можно найти в блоге его автора Эрика Амундсона и на странице панели запуска проекта MySQL Search & amp; Замените

Я не верю, что вы все еще ищете ответ по прошествии всего этого времени, но я решил опубликовать и мою подсказку, надеясь, что это может помочь кому-то еще появиться здесь в будущем. в поисках решения этой проблемы.

2
ответ дан Luca Borrione 29 November 2019 в 03:36
поделиться

Метод дампа MySQL был бы лучшим выбором, если вы готовы повторно импортировать всю базу данных. Для тех, кто не хочет этого делать - установка ядра WordPress на самом деле состоит только из 11 таблиц, из которых лишь немногие являются столбцами содержимого, поэтому замена столбца будет такой же простой. Предполагая, что у вас нет множества таблиц плагинов, ссылающихся на вашу ссылку или строку, это будет ваш SQL:

UPDATE wp_commentmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
UPDATE wp_comments SET comment_content = REPLACE(comment_content,'xcurrentx','xreplacementx');
UPDATE wp_links SET link_description = REPLACE(link_description,'xcurrentx','xreplacementx');
UPDATE wp_options SET option_value = REPLACE(option_value,'xcurrentx','xreplacementx');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_content = REPLACE(post_content,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_title = REPLACE(post_title,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt,'xcurrentx','xreplacementx');
UPDATE wp_term_taxonomy SET description = REPLACE(description,'xcurrentx','xreplacementx');
UPDATE wp_usermeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
11
ответ дан Brad Larson 29 November 2019 в 03:36
поделиться

Дополнительно к ответу Брэда Ларсона - установить переменные вроде:

SET @what_to_be_replaced = "what_to_be_replaced", @to_be_replaced_by = "to_be_replaced_by";

, а затем использовать его следующим образом:

UPDATE wp_commentmeta SET meta_value = REPLACE(meta_value, @what_to_be_replaced, @to_be_replaced_by );
0
ответ дан Alexey Vorobyov 29 November 2019 в 03:36
поделиться

Существует также плагин Wordpress под названием Search Regex , который позволяет выполнять grep поиск и замену по всей базе данных.

1
ответ дан Jean 29 November 2019 в 03:36
поделиться

ЗАМЕНА MySQL или замена строки вручную в файле sql или в БД в WordPress не очень хороший способ. WordPress использует сериализованные поля, которые могут сломаться, если вы замените в них некоторую строку (это был мой случай)

Я использовал плагин Better Search Replace , который отлично работал для меня

0
ответ дан Ondrej 29 November 2019 в 03:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: