Войти

Показать полную графическую версию : Глобальная замена в MySQL


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

Sham
05-04-2010, 20:12
UPDATE
`table`
SET
`mail` = 'bbb@gmail.com'
WHERE
`mail` = 'aaa@gmail.com'

interlit
05-04-2010, 20:27
Не проходит: #1146 - Table 'nozdrin_forumvb.table' doesn't exist

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

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

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

interlit
05-04-2010, 21:07
Нда... Увы, я не программист и сие мне недоступно. Но всё равно спасибо.




© OSzone.net 2001-2012