SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.12.2009 02:35:36

GliX
Участник
Зарегистрирован: 25.03.2009
Сообщений: 10

Замена текстового выражения на другое

Доброго времени суток.

Возникла проблема такого рода - волей судьбы пришлось сменить домен и теперь в срочном порядке необходимо заменить все упоминания о старом домене на новый. Большой форум, более 3 миллионов записей в базе данных. Старый домен упоминается крайне часто.

Проблемы и вопросы начинаются с того, что старый домен был второго уровня (поддомен), а новый - первого. Знаний мускуля хватило вот на такой запрос:

UPDATE `имя_таблицы` SET `имя_поля`=REPLACE(`имя_поля`,'xxx.yyy.ru','zzz.ru');

Где xxx.yyy.ru - старый, а zzz.ru - новый домен, соответственно.

Просьба прокомментировать правильность составления запроса. Также у меня есть ещё несколько вопросов, на которые сам ответить уже не в силах:

1) Какие могут возникнуть проблемы при такой замене ? Не будет ли проблем с кодировкой полученного текста и прочим ?
2) Не возникнет ли проблем из-за упомянутой мною выше проблемы "различий" в уровнях доменов ?
3) Рационально ли прогонять такой запрос по всей БД сразу или сделать всё в несколько "заходов" ?

Заранее благодарю за ответ.

Отредактированно GliX (22.12.2009 18:47:41)

Неактивен

 

#2 22.12.2009 17:25:55

kiligin
Завсегдатай
Зарегистрирован: 28.11.2009
Сообщений: 48

Re: Замена текстового выражения на другое

UPDATE `имя_таблицы` SET `имя_поля` = 'zzz.ru' where 'имя_поля'= 'xxx.yyy.ru'
на вопросы 1, 2 и 2 ответов я тебе дать не смогу

Неактивен

 

#3 22.12.2009 18:47:05

GliX
Участник
Зарегистрирован: 25.03.2009
Сообщений: 10

Re: Замена текстового выражения на другое

kiligin написал:

UPDATE `имя_таблицы` SET `имя_поля` = 'zzz.ru' where 'имя_поля'= 'xxx.yyy.ru'
на вопросы 1, 2 и 2 ответов я тебе дать не смогу

Что-то смысла вашего запроса я не понял. У меня в полях хранятся огромные тексты сообщений, в которых содержатся упоминания старого домена, для чего Вы мне даёте запрос, которые заменит полностью все поля содержащие конкретный определённый текст, на другой ? Я спрашиваю каким запросом заменяется определённый текст конкретно в самих сообщениях (содержимом полей) без повреждения близлежащего текста.

Неактивен

 

#4 23.12.2009 15:40:22

GliX
Участник
Зарегистрирован: 25.03.2009
Сообщений: 10

Re: Замена текстового выражения на другое

Не надо отвечать на мои вопросы, хотя бы прокомментируйте правильность составления запроса, написанного в 1-ом посте темы smile

Неактивен

 

#5 23.12.2009 16:44:43

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Замена текстового выражения на другое

Попробуйте выполнить? wink

Запрос правильный, возможно, проще будет делать через дамп, т.к. всё равно
нужно будет исправлять больше, чем в одном месте. Ну то есть что-то типа
mysqldump dbname | sed 's/oldhost/newhost/' | mysql newdbname

Неактивен

 

#6 23.12.2009 18:06:18

GliX
Участник
Зарегистрирован: 25.03.2009
Сообщений: 10

Re: Замена текстового выражения на другое

paulus
Выполнить не сложно, вот только проблем с поднятием из бекапа (учитывая специфику базы - торрент-трекер) будет немного больше smile

Спасибо.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson