Как выполнить SQL-запрос на изменение совпадений?

auStern
На сайте с 30.03.2007
Offline
167
1020

Нужно массово изменить в базе один урл на другой (в связи с переездом много ссылок остались на старый адрес). Движок форум VBulletin. Пробовал делать в phpmyadmin, в ручную работает, но ссылок очень много :) Может подскажете есть-ли какой-то готовый запрос на изменение этого "зараз"? Спасибо ;)

[Удален]
#1
UPDATE table_name SET pole = 'старый урл' WHERE pole = 'новый урл'

...........

DyaDya
На сайте с 11.04.2007
Offline
147
#2

Всё зависит от того, где этот URL встречается. Если в отдельном поле, то ответ уже дан.

А если в текстах сайта, форума, то придётся писать регулярку (хотя лучше обычный реплейс сделать str_replace) и скриптик на PHP, который подрубается к базе и ведёт поиск и замену во всех полях базы.

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

☝ Кстати, написал совет выше и сам увидел гениальное простое решение:

1. Сделать дамп базы данных в файл sql.

2. Сделать обычный поиск и замену в этом файле одних вхождений на другие. В текстовом редакторе! ☝ И никаких скриптов!

3. Залейте дамп обратно. ВСЁ! Разве не круто? ;)

Ну исходный дамп всё равно лучше отдельно сохранить, опять же, на всяк случай. А то случаи бывают разные!

p.s. Проблемки могут возникнуть только с ОЧЕНЬ большими файлами, не каждый редактор справится! И в случае использования "бинарных" кодировок в базе данных. Но это экзотика и от кривых рук, обычно. Уверен, это не ваши случаи.

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)
AN
На сайте с 05.06.2004
Offline
243
#3
Phessiv:

UPDATE table_name SET pole = 'старый урл' WHERE pole = 'новый урл'

Только наоборот:)

UPDATE table_name SET pole = 'новый урл' WHERE pole = 'старый урл'

Размещу ваши баннеры на посещаемых сайтах. Места еще есть! Возможен безнал. (/ru/forum/324945) Нужны копирайтеры/рерайтеры - медики. Пишите в личку. (/ru/forum/676932)
auStern
На сайте с 30.03.2007
Offline
167
#4

Phessiv, не работает. Запрос выполнен, но ничего не обновлено..

auStern добавил 29.07.2009 в 08:24

Дядь, гениально!

Дамп + jEdit + найти и заменить :D

M
На сайте с 19.09.2007
Offline
112
#5

делаете дам , в дампе правите любым доступным путем , заливаете обратно .

плюсы - не нужно гадать где там, в какой таблице был "этот урл" ...

auStern
На сайте с 30.03.2007
Offline
167
#6

дайте кто-нибудь содержимое таблицы externalcache

auStern добавил 29.07.2009 в 10:07

нашел в Mysql-schema )

тему можно закрыть

VN
На сайте с 05.05.2009
Offline
34
#7

UPDATE junk SET f1=(replace (f1, 'John','Ringo'));

junk - таблица

f1 - поле

John - найти

Ringo - заменить на

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий