mysql - столбце - поиск в phpmyadmin




Найти и заменить текст во всей таблице с помощью запроса MySQL (6)

Генерировать SQL-запросы изменений (FAST)

mysql -e "SELECT CONCAT ('update', table_name, 'set', column_name, '= replace (', column_name, ',' 'www.oldsite.com' ',' 'www.newsite.com' '); ') AS statement FROM information_schema.columns WHERE table_name LIKE' wp_% '"-u root -p your_db_name_here> upgrade_script.sql

Удалите мусор в начале файла. У меня были некоторые.

nano upgrade_script.sql

Запустите сгенерированный скрипт с параметрами --force, чтобы пропустить ошибки. (SLOW - хватайте кофе, если большая БД)

mysql -u root -p your_db_name_here --force <upgrade_script.sql

Обычно я использую ручной поиск для замены текста в базе данных MySQL с помощью phpmyadmin. Я устал от этого сейчас, как я могу запустить запрос, чтобы найти и заменить текст новым текстом во всей таблице в phpmyadmin?

Пример: найдите ключевое слово domain.com , замените его на www.domain.com .


Для single table обновления single table

 UPDATE `table_name`
 SET `field_name` = replace(same_field_name, 'unwanted_text', 'wanted_text')

Из multiple tables -

Если вы хотите редактировать из всех таблиц, лучший способ - взять dump а затем find/replace и загрузить его обратно.


Запуск SQL-запроса в PHPmyadmin для поиска и замены текста во всех сообщениях блога Wordpress, таких как поиск mysite.com/wordpress и замена его таблицей mysite.com/news в этом примере: tj_posts

UPDATE `tj_posts`
SET `post_content` = replace(post_content, 'mysite.com/wordpress', 'mysite.com/news')

Поместите это в php-файл и запустите его, и он должен делать то, что вы хотите.

// Connect to your MySQL database.
$hostname = "localhost";
$username = "db_username";
$password = "db_password";
$database = "db_name";

mysql_connect($hostname, $username, $password);

// The find and replace strings.
$find = "find_this_text";
$replace = "replace_with_this_text";

$loop = mysql_query("
    SELECT
        concat('UPDATE ',table_schema,'.',table_name, ' SET ',column_name, '=replace(',column_name,', ''{$find}'', ''{$replace}'');') AS s
    FROM
        information_schema.columns
    WHERE
        table_schema = '{$database}'")
or die ('Cant loop through dbfields: ' . mysql_error());

while ($query = mysql_fetch_assoc($loop))
{
        mysql_query($query['s']);
}

Я считаю, что «swapnesh» отвечает, чтобы быть лучшим! К сожалению, я не смог выполнить его в phpMyAdmin (4.5.0.2), который, хотя и нелогичен (и пробовал несколько вещей), продолжал говорить, что было найдено новое утверждение и что никакой разделитель не найден ...

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

UPDATE `wp_posts` AS `toUpdate`,
(SELECT `ID`,REPLACE(`guid`,'http://old.tld','http://new.tld') AS `guid` 
 FROM `wp_posts` WHERE `guid` LIKE 'http://old.tld%') AS `updated`
SET `toUpdate`.`guid`=`updated`.`guid`
WHERE `toUpdate`.`ID`=`updated`.`ID`;

Чтобы проверить ожидаемый результат, вы можете использовать:

SELECT `toUpdate`.`guid` AS `old guid`,`updated`.`guid` AS `new guid`
FROM `wp_posts` AS `toUpdate`,
(SELECT `ID`,REPLACE(`guid`,'http://old.tld','http://new.tld') AS `guid`
 FROM `wp_posts` WHERE `guid` LIKE 'http://old.tld%') AS `updated`
WHERE `toUpdate`.`ID`=`updated`.`ID`;

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







phpmyadmin