Masowa zmiana zawartości pola w bazie MySQL

jaW dniu dzisiejszym przenosiłem bazę danych swojego bloga na nowy hosting. Myślałem, że uda mi się to praktycznie bezproblemowo, ale niestety tak nie było. Problemy już się zaczęły podczas próby importu z pliku bazy na nowy serwer. Za każdym razem kończyło się to jakimś błędem nie do końca dla mnie zrozumiałym. Problem jednak udało mi się rozwiązać przenosząc tabelę po tabeli, a nie hurtem całą bazę. Problem rozwiązany.

Niestety pojawił się kolejny znacznie poważniejszy problem, a raczej wyzwanie. Należało w jakiś sposób wyedytować wszystkie wpisy w bazie danych, które nawiązywały w jakiś sposób do starego adresu bloga.

W skrócie: należało każdy wpis zawierający w sobie markasblog.cba.pl zamienić na markasblog.pl w innym przypadku, każda fotografia, każdy link do innego postu w rzeczywistości linkował by do serwera cba.pl, który tak naprawdę już niedługo przestanie istnieć.

Jeżeli miałbym edytować praktycznie każdy wpis w bazie ręcznie, zajęłoby mi to jakiś miesiąc. Musiałem poszukać możliwości masowej zmiany wpisów w bazie danych. I znalazłem. Jak zwykle okazało się, że najprostsze rozwiązania są najskuteczniejsze.

Z pomocą przyszła mi funkcja REPLACE() uruchomiana z wyzwalaczem UPDATE. Poniżej składnia polecenia, za pomocą którego zastępujemy konkretny ciąg znaków innym ciągiem.

UPDATE tabela SET pole = REPLACE (pole, 'Szukany ciąg znaków','Nowy ciąg znaków') 

I tak na przykładzie mojego przypadku: chciałem zastąpić ciąg znaków markasblog.cba.pl ciągiem znaków markasblog.pl. W tym celu użyłem tak skonstruowanego zapytania do bazy:

UPDATE wp_posts SET guid = REPLACE (guid,'markasblog.cba.pl','markasblog.pl')

Oczywiście czynność tą należy powtórzyć dla każdej tabeli w bazie, ale i tak jest to sposób na tyle szybki, że ja uporałem się w 10 minut w około 1,5 wpisów w bazie.