Reemplazar cadena de texto Mysql de forma masiva
No hace mucho tiempo, en una de mis webs, tuve que cambiar una palabra que aparecía en el contenido del sitio por otra nueva y para ello tuve que hacer una consulta sql que lo hiciera de forma masiva para no tener que editar registro a registro todo el contenido de la Web. Teniendo en cuenta que dicha palabra aparecía más de 200.000 veces… habría sido una locura hacerlo de otra forma.
Con una simple consulta podemos quitar la palabra o grupo de palabras que nos interesen de una tabla y sustituirlas por otra.
Por ejemplo, imagina que migras tu página de www.tudominio.com a otro www.nuevodominio.com y tienes datos de la URL anterior en tu base de datos. Podrías bajarte la base de datos desde MysqlAdmin y abrirla, por ejemplo con el Notepad para hacer una búsqueda de esa palabra y usar la opción de reemplazar. Después vuelves a volcar ese archivo SQL y listo, pero hay una forma más sencilla de hacerlo y que además te permite tener el control de lo que cambias ya que elegiras la tabla que quieres alterar.
Esta es la secuencia SQL, testeada por mí y que me ha funcionado a la perfección:
UPDATE `tabla_con_contenido_a_cambiar` SET `fulltext` = REPLACE(`fulltext`, 'cadena texto original', 'nueva cadena de texto');
Espero que os sirva de utilidad.
Actualizo la entrada añadiendo dos pantallazos de MysqlAdmin y del apartado donde tenemos que ejecutar la secuencia en la pestaña SQL (aviso que dependiendo la versión de vuestro servidor puede apareceros diferente al que muestro aquí).