|
|
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток всем! Вынося за скобки необходимость решения это задачи, хотел бы уточнить, не решал ли кто-то задачу замены ВСЕХ вхождений слова/фразы во ВСЕХ таблицах БД на другое слово? Я сделал дамп БД, потом натравил на него Perl Код: python 1. После импорта дампа назад в БД, на сайте остались "плохие" слова. То-ли с кодировкой проблема и Perl не нашёл по указанному шаблону вхождения этих слов, то ли проблема в чём-то другом. Поделитесь конструктивными идеями по этому поводу, пожалуйста. Дамп БД почти 2Gb и править дамп руками или сами таблицы через update - это не вариант. неизвестны ни названия таблиц, содержащих эти слова, ни поля ни условия для where. Кодировка таблиц utf-8. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 09:59:55 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Ещё хотел добавить, что Perl таки часть слов нашёл и поменял. Так как результаты cat /backup/test.sql | grep 'Слова, которые нужно поменять' ДО изменения дампа и ПОСЛЕ него выдают различные результаты. Т.е. после изменения дампа старых слов grep не выдаёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 10:02:38 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
А в чём сложности? список таблиц БД доступен, список полей тоже... осталось нарисовать процедуру, которая соберёт динамически тексты запросов и выполнит необходимые замены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 10:06:22 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
[quot Romka-Fes Вынося за скобки необходимость решения это задачи, хотел бы уточнить, не решал ли кто-то задачу замены ВСЕХ вхождений слова/фразы во ВСЕХ таблицах БД на другое слово? [/quot] Необходимость решения этой задачи, на самом деле, самый главный вопрос. Это тебе не эксель, это СУБД, тут не может быть таких задач. По крайней мере нужно ограничить набор полей полями символьных типов данных. Твой вариант не так уж и плох, ещё можно было бы (я бы так делал) по метаданным небольшой програмкой генерировать ищущие и заменяющие запросы для каждой из таблиц, и выполнять их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 10:23:27 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Akina, Список БД таки доступен, но вопрос стоит в контексте одной заданной БД. 'Show tables' тоже есть и метаданные о таблицах, НО в силу того, что неизвестно, в каких именно таблицах и полях есть заданные слова, придётся городить динамически UPDATE по всем и вся. Я хотел более изящно сделать - попроавить дамп и залить всё назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 10:49:02 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
MasterZiv, "Это тебе не эксель, это СУБД" - про Excel я ничего не писал, о том что такое СУБД я знаю не по наслышке. "тут не может быть таких задач." - это как суслик. Вы его не видите, а он есть :) Задачи таки тоже есть: есть заявка от юзверя - на сайте N надо ВСЕ слова "АБАБА" поменять на "ГАЛАМАГА". Если быть более приближённым к реальности, то надо "по всему сайту" поменять название компании. Мой вопрос можно перфразировать: как корректно в дампе БД MySQL поменять во ВСЕХ текстовых полях ВСЕХ таблиц заданные слова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 10:52:01 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Romka-FesЯ хотел более изящно сделать - попроавить дамп и залить всё назад.Ну и делайте. Для разовой задачи вполне нормальный вариант. Только возьмите инструмент, который нормально юникод понимает. Относится ли к таковым Перл - не знаю. Да и это уже для другого подфорума вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 10:54:22 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
не знаю каких размеров дамп, но можно открыть в Notepad++ и сделать простую замену. UTF он понимает прекрасно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 11:07:35 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
увидел -2G. N++ должен открыть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 11:08:41 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Romka-Fesкак корректно в дампе БД MySQL поменять во ВСЕХ текстовых полях ВСЕХ таблиц заданные слова.В общем случае - парсить дамп, чтобы не поменять "где не надо". Еслиже есть убеждённость, что не попадёте случайно в служебные структуры - то тупо поиск-замена в каком-нить notepad++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 11:09:59 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinov, не факт, полуторагиговый у меня например не открывает уже :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 11:15:44 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Akina, Это не Unix-way :) хочется командой, максимум парой обойтись. + есть смутные подозрения что это надо будет делать не 1 раз. Поэтому нужно иметь готовое быстроработающее и надёжное решение, без необходимости переливания дампа на Win и назад. Пробовал awk делать замену, так он вообще файл дампа урезает до 4097 байт. Но это тема другого форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 11:30:24 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Romka-Fes, sed? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 11:35:01 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Romka-Fes Код: python 1. Вас кто-то заставляет делать это в одну строку? Почему бы не написать скрипт на perl полностью работающий и отладить ? Ну попробуйте perl -mutf8 -e ... . Это все равно что использовать "use utf8;" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 11:36:39 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Romka-FesЭто не Unix-way :) хочется командой, максимум парой обойтись Любой редактор, умеющий принимать из потока, отдавать в поток, выполнить замену фрагментов из комстроки и при этом не изгадить остальное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 11:38:52 |
|
||
|
Замена ВСЕХ слов по ВСЕХ полях ВСЕХ таблиц БД
|
|||
|---|---|---|---|
|
#18+
Akina, вот я perl и выбрал для этих целей. Как оказалось, проблема в самом шаблоне поиска слова (попадаются латинские буквы в русских словах) и написание на русском и украинском. проблема не perl. Так что этот вариант Код: plaintext 1. таки можно использовать. А ещё оказалось что часть контента таки валяется во всякого рода статике (шаблонах, html, etc). Всем спасибо за дискуссию! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 13:25:22 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38975874&tid=1833106]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
200ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 533ms |

| 0 / 0 |
