Форум: "Прочее";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
ВнизphpMySQLAdmin Найти похожие ветки
← →
SerJaNT © (2007-03-13 08:56) [0]Как в phpMySQL произвести замену определенной строки по все базе данных? Или каким sql-запросом?
← →
easy © (2007-03-13 09:25) [1]UPDATE `table` SET `string` = "newstring" WHERE `string` = "oldstring";
← →
homm © (2007-03-13 09:28) [2]> [1] easy © (13.03.07 09:25)
Если телепатор включить, то можно представить что человеку нужно автомсатически для всех таблиц, которых у него под сотню (скажем) плюс, выражние "замену определенной строки" вполне может означать "замену определенной подстроки" :)
Автор, что хотел то?
← →
SerJaNT © (2007-03-13 09:31) [3]
> easy © (13.03.07 09:25) [1]
Не, немного не то. Во-первых, таблиц там очень много, и во-вторых, заменить надо подстроку на строку. Может php-скриптом как-то можно?
← →
Юрий © (2007-03-13 09:33) [4]> [2] homm © (13.03.07 09:28)
> Если телепатор включить
Даже телепатор включать не надо, сказано же, для всей базы данных. :)
← →
homm © (2007-03-13 09:37) [5]> [4] Юрий ©
А ты говоришь, не надо!!! только взгляни на [2] и [3] Один в один!!! :)
← →
SerJaNT © (2007-03-13 09:37) [6]Описываю подробнее:
есть база в которой n-ое количество таблиц. В неизвестной записи(ях) неизвестно каких таблиц находятся неверные данные т.е. внутри текста. Вопрос такой: необходимо "просмотреть" все эти таблицы базы и заменить неверный текст на правильный. Как?
← →
Юрий © (2007-03-13 09:37) [7]> [0] SerJaNT © (13.03.07 08:56)
Выводит список таблиц:SHOW TABLES;
Дальше разобрать, и пройтись по всем в php.
← →
homm © (2007-03-13 09:38) [8]> В неизвестной записи(ях) неизвестно каких таблиц
Хотя-бы названия полей известны?
← →
SerJaNT © (2007-03-13 09:40) [9]
> В неизвестной записи(ях) неизвестно каких таблиц
нет :-) Таблиц там просто дохрена и я не знаю даже где хранятся эти неверные данные.. вот задачка-то, блин...
← →
SerJaNT © (2007-03-13 09:42) [10]а средствами phpmysqladmin никак нельзя ?
← →
Рамиль © (2007-03-13 09:46) [11]Лично я, учитывая мои знания php, забрал бы базу себе на комп и прошелся по ней делфевой програмкой:)
← →
SerJaNT © (2007-03-13 09:49) [12]
> Лично я, учитывая мои знания php, забрал бы базу себе на
> комп и прошелся по ней делфевой програмкой:)
Спасибо идею, так наверное и сделаю. Только сливать базу придется еще неделю...
← →
Рамиль © (2007-03-13 09:53) [13]Съезди к хостеру, если это физически возможно, за символичскую плату он ее тебе сольет и зальет обратно потом. Но если база такая большая, то за эту неделю можно и php подучить..
← →
homm © (2007-03-13 09:58) [14]Алгоритм, имхо, такой:
1) Выясняешь названия всех таблиц с помошью SHOW TABLES, далее проделываешь все пункты для каждой таблицы
2) шлешSELECT * FROM TableName LIMIT 1;
3) mysql_fetch_array для результата дает масив, где названия полей есть хеши масива (так мы узнаем названия полей).
4) далее составляем запрос типаSELECT Fld1, Fld2, Fld3... FROM TableName WHERE Fld1 LIKE "%substr%" OR Fld2 LIKE "%substr%" OR Fld3 LIKE "%substr%" ....;
5) Заменяем в возвращенном результате substr на new_substr, причем сохраняем куданить в $row2, а не тупо заменяем.
6) И самое интересное.UPDATE TableName SET Fld1 = $row2[fld1], Fld2 = $row2[fld2], Fld3 = $row2[fld3], .... WHERE Fld1 = $row[Fld1] AND Fld2 = $row[Fld2] AND Fld3 = $row[Fld3]
.
ИМХО. За***шся отлаживать. Будет большое везение, если пункты 4,5,6 можно схлопнуть до одной операции с помошью регулярных выражений, поищи в инете, беглый взгляд на хелп по mysql ясность не внес.
← →
homm © (2007-03-13 10:04) [15]Если база реально большая, работать это будет часы и сутки...
← →
DSKalugin © (2007-03-13 10:57) [16]Выгрузить базу в текстовый скрипт(дамп) а потом "работа со строками" с последующей заливкой этого дампа обратно. Достаточно знать как заменить подстроку в строке(хоть средствами блокнота). Знания SQL тут совсем не нужны
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c