powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
17 сообщений из 17, страница 1 из 1
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975874
Фотография Romka-Fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток всем!
Вынося за скобки необходимость решения это задачи, хотел бы уточнить, не решал ли кто-то задачу замены ВСЕХ вхождений слова/фразы во ВСЕХ таблицах БД на другое слово?
Я сделал дамп БД, потом натравил на него Perl

Код: python
1.
perl -e 's/Плохие слова/Хорошие слова/g' -pi /backup/test.sql



После импорта дампа назад в БД, на сайте остались "плохие" слова. То-ли с кодировкой проблема и Perl не нашёл по указанному шаблону вхождения этих слов, то ли проблема в чём-то другом.

Поделитесь конструктивными идеями по этому поводу, пожалуйста.

Дамп БД почти 2Gb и править дамп руками или сами таблицы через update - это не вариант. неизвестны ни названия таблиц, содержащих эти слова, ни поля ни условия для where.

Кодировка таблиц utf-8.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DROP TABLE IF EXISTS `cms3_cluster_nodes_cache_keys`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `cms3_cluster_nodes_cache_keys` (
  `node_id` int(11) DEFAULT NULL,
  `key` varchar(255) NOT NULL DEFAULT '',
  KEY `key` (`key`),
  KEY `node_id` (`node_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975878
Фотография Romka-Fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё хотел добавить, что Perl таки часть слов нашёл и поменял.
Так как результаты
cat /backup/test.sql | grep 'Слова, которые нужно поменять'
ДО изменения дампа и ПОСЛЕ него выдают различные результаты. Т.е. после изменения дампа старых слов grep не выдаёт.
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975885
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чём сложности? список таблиц БД доступен, список полей тоже... осталось нарисовать процедуру, которая соберёт динамически тексты запросов и выполнит необходимые замены.
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975904
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Romka-Fes
Вынося за скобки необходимость решения это задачи, хотел бы уточнить, не решал ли кто-то задачу замены ВСЕХ вхождений слова/фразы во ВСЕХ таблицах БД на другое слово?
[/quot]

Необходимость решения этой задачи, на самом деле, самый главный вопрос. Это тебе не эксель, это СУБД, тут не может
быть таких задач. По крайней мере нужно ограничить набор полей полями символьных типов данных.

Твой вариант не так уж и плох, ещё можно было бы (я бы так делал) по метаданным небольшой програмкой генерировать ищущие
и заменяющие запросы для каждой из таблиц, и выполнять их.
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975932
Фотография Romka-Fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Список БД таки доступен, но вопрос стоит в контексте одной заданной БД.
'Show tables' тоже есть и метаданные о таблицах, НО в силу того, что неизвестно, в каких именно таблицах и полях есть заданные слова, придётся городить динамически UPDATE по всем и вся. Я хотел более изящно сделать - попроавить дамп и залить всё назад.
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975937
Фотография Romka-Fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

"Это тебе не эксель, это СУБД" - про Excel я ничего не писал, о том что такое СУБД я знаю не по наслышке.
"тут не может быть таких задач." - это как суслик. Вы его не видите, а он есть :)
Задачи таки тоже есть: есть заявка от юзверя - на сайте N надо ВСЕ слова "АБАБА" поменять на "ГАЛАМАГА".
Если быть более приближённым к реальности, то надо "по всему сайту" поменять название компании.

Мой вопрос можно перфразировать: как корректно в дампе БД MySQL поменять во ВСЕХ текстовых полях ВСЕХ таблиц заданные слова.
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975939
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romka-FesЯ хотел более изящно сделать - попроавить дамп и залить всё назад.Ну и делайте. Для разовой задачи вполне нормальный вариант. Только возьмите инструмент, который нормально юникод понимает. Относится ли к таковым Перл - не знаю. Да и это уже для другого подфорума вопрос.
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975958
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю каких размеров дамп, но можно открыть в Notepad++ и сделать простую замену. UTF он понимает прекрасно
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975960
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
увидел -2G. N++ должен открыть
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975964
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romka-Fesкак корректно в дампе БД MySQL поменять во ВСЕХ текстовых полях ВСЕХ таблиц заданные слова.В общем случае - парсить дамп, чтобы не поменять "где не надо".
Еслиже есть убеждённость, что не попадёте случайно в служебные структуры - то тупо поиск-замена в каком-нить notepad++
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975969
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

не факт, полуторагиговый у меня например не открывает уже :(
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38975992
Фотография Romka-Fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
Это не Unix-way :)
хочется командой, максимум парой обойтись. + есть смутные подозрения что это надо будет делать не 1 раз.
Поэтому нужно иметь готовое быстроработающее и надёжное решение, без необходимости переливания дампа на Win и назад.
Пробовал awk делать замену, так он вообще файл дампа урезает до 4097 байт. Но это тема другого форума.
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38976003
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romka-Fes,

sed?
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38976008
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romka-Fes
Код: python
1.
perl -e 's/Плохие слова/Хорошие слова/g' -pi /backup/test.sql




Вас кто-то заставляет делать это в одну строку?
Почему бы не написать скрипт на perl полностью работающий и отладить ?

Ну попробуйте perl -mutf8 -e ... . Это все равно что использовать "use utf8;"
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38976011
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Romka-FesЭто не Unix-way :)
хочется командой, максимум парой обойтись
Любой редактор, умеющий принимать из потока, отдавать в поток, выполнить замену фрагментов из комстроки и при этом не изгадить остальное.
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38976174
Фотография Romka-Fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

вот я perl и выбрал для этих целей.
Как оказалось, проблема в самом шаблоне поиска слова (попадаются латинские буквы в русских словах) и написание на русском и украинском.
проблема не perl. Так что этот вариант
Код: plaintext
1.
 perl -e 's/Плохо/Хорошо/g' -pi /backup/dump.sql


таки можно использовать.

А ещё оказалось что часть контента таки валяется во всякого рода статике (шаблонах, html, etc).
Всем спасибо за дискуссию!
...
Рейтинг: 0 / 0
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
    #38976175
Фотография Romka-Fes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-k2-,

тоже вариант. Но я в нём не силён, поэтому не рассматривал пока.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]