Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Глобальная замена в MySQL (http://forum.oszone.net/showthread.php?t=172296)

interlit 05-04-2010 20:05 1385618

Глобальная замена в MySQL
 
Прошу помощи!
Задача: требуется в базе данных MySQL Форума заменить один email на другой. Например: aaa@gmail.com на bbb@gmail.com Адрес встречается более 1000 раз, во многих таблицах, заменять его вручную и долго, и чревато ошибками. Так что поиск и замену нужно делать во всех таблицах. Простейший способ — сделать замену в текстовом редакторе не проходит, при восстановлении — ошибка запроса SQL. Размер бэкапа — 64 МБ, сам файл — около 200 МБ. Бэкап и восстановление делались с помощью утилиты Sypex Dumper Lite.

Sham 05-04-2010 20:12 1385623

Код:

UPDATE
    `table`
SET
    `mail` = 'bbb@gmail.com'
WHERE
    `mail` = 'aaa@gmail.com'


interlit 05-04-2010 20:27 1385639

Не проходит: #1146 - Table 'nozdrin_forumvb.table' doesn't exist

Sham 05-04-2010 20:32 1385642

`table` - имя таблицы, где производится замена (надо подставить свое значение).

interlit 05-04-2010 20:36 1385648

Я не знаю, в каких таблицах нужно делать замену, их много. Можно ли сделать запрос так, чтобы по всем таблицам поиск и замена прошли?
Всего таблиц 112, так что перебирать их все -- всё равно, что вручную заменять.
попробовал поставить имя первой попавшейся таблицы vb3_access и получил: #1054 - Unknown column 'mail' in 'where clause'

Sham 05-04-2010 20:57 1385661

имхо только [php-]скрипт... есть запросы SHOW TABLES, SHOW COLUMNS, с помощью которых можно пройтись по всем полям базы и по каждому сделать UPDATE...

interlit 05-04-2010 21:07 1385670

Нда... Увы, я не программист и сие мне недоступно. Но всё равно спасибо.


Время: 12:53.

Время: 12:53.
© OSzone.net 2001-