MySQL: Buscar y Reemplazar texto con SQL 17

Hace unos dias atras este blog se mudo de hosting. El cambio se debio a que el server anterior esta saturado por la poblacion de World of Warcraft, asi que es mejor dejarlo exclusivo para chapincraft.

Durante la migracion de los sistemas la instalacion y configuracion del sistema Linux, el web server Lighttpd, MySQL y WordPress fue relativamente sencillo, lo que si fue problematico ha sido la migracion de la base de datos del WP.

Para realizar el backup de la base de datos del blog en wordpress ejecute el comando mysqldump y luego lo subi al nuevo servidor con la misma version de MySQL. El problema es que a pesar que el MySQL tiene la misma codificacion de caracteres, no me esta mostrando las tildes ni las letras ñ (enie). Luego de consultar con los amigos de phpgt alguien me recomendo hacer una busqueda y reemplazo.

Al principio no me parecio muy bien hacer las busquedas sobre el archivo de texto sql. Me parece mas logico hacer una pequeña consulta SQL sobre el servidor de bases de datos, ya que deberia de realizar la consulta mas rapido para solucionar las tildes y caracteres cambiados.

Encontre que existe la instruccion REPLACE en MySQL, asi que manos a la obra.

Reemplazando texto en MySQL

El comando REPLACE tiene una sintaxis sencilla, descrita de la siguiente forma:

UPDATE tabla SET campo = REPLACE(campo,'texto a buscar','nuevo texto');

Asi que utilizando la consulta anterior, podemos personalizarla para nuestro caso y buscar el texto corrupto sobre las tablas que contienen los titulos y articulos en wordpress, post_title y post_content respectivamente:

Reemplazar texto en titulos y contenido de WordPress

Dentro de phpmyadmin podemos ejecutar la siguiente consulta:

update wp_posts set post_title = replace(post_title, 'ñ', 'ñ');
update wp_posts set post_title = replace(post_title, 'á', 'á');
update wp_posts set post_title = replace(post_title, 'ó', 'ó');
update wp_posts set post_title = replace(post_title, 'Ã', 'í');
update wp_posts set post_title = replace(post_title, 'íº', 'ú');
update wp_posts set post_title = replace(post_title, 'í‘', 'Ñ');
update wp_posts set post_title = replace(post_title, 'ú', 'ú');
update wp_posts set post_title = replace(post_title, 'í©', 'é');
update wp_posts set post_title = replace(post_title, '–', '–');
update wp_posts set post_content = replace(post_content, 'ñ', 'ñ');
update wp_posts set post_content = replace(post_content, 'á', 'á');
update wp_posts set post_content = replace(post_content, 'ó', 'ó');
update wp_posts set post_content = replace(post_content, 'Ã', 'í');
update wp_posts set post_content = replace(post_content, 'íº', 'ú');
update wp_posts set post_content = replace(post_content, 'í©', 'é');
update wp_posts set post_content = replace(post_content, 'ú', 'ú');
update wp_posts set post_content = replace(post_content, 'í‘', 'Ñ');

Reemplazar texto en tabla comentarios de wordpress

update wp_comments set comment_content = replace(comment_content, '–', '–');
update wp_comments set comment_content = replace(comment_content, 'ñ', 'ñ');
update wp_comments set comment_content = replace(comment_content, 'á', 'á');
update wp_comments set comment_content = replace(comment_content, 'ó', 'ó');
update wp_comments set comment_content = replace(comment_content, 'Ã', 'í');
update wp_comments set comment_content = replace(comment_content, 'íº', 'ú');
update wp_comments set comment_content = replace(comment_content, 'í©', 'é');
update wp_comments set comment_content = replace(comment_content, 'ú', 'ú');
update wp_comments set comment_content = replace(comment_content, 'í‘', 'Ñ');

update wp_comments set comment_author = replace(comment_author, '–', '–');
update wp_comments set comment_author = replace(comment_author, 'ñ', 'ñ');
update wp_comments set comment_author = replace(comment_author, 'á', 'á');
update wp_comments set comment_author = replace(comment_author, 'ó', 'ó');
update wp_comments set comment_author = replace(comment_author, 'Ã', 'í');
update wp_comments set comment_author = replace(comment_author, 'íº', 'ú');
update wp_comments set comment_author = replace(comment_author, 'í©', 'é');
update wp_comments set comment_author = replace(comment_author, 'ú', 'ú');
update wp_comments set comment_author = replace(comment_author, 'í‘', 'Ñ');

Reemplazo para Yet another related post plugin

update wp_yarpp_keyword_cache set body = replace(body, 'ñ', 'ñ');
update wp_yarpp_keyword_cache set body = replace(body, 'á', 'á');
update wp_yarpp_keyword_cache set body = replace(body, 'ó', 'ó');
update wp_yarpp_keyword_cache set body = replace(body, 'Ã', 'í');
update wp_yarpp_keyword_cache set body = replace(body, 'íº', 'ú');
update wp_yarpp_keyword_cache set body = replace(body, 'í‘', 'Ñ');
update wp_yarpp_keyword_cache set body = replace(body, 'ú', 'ú');
update wp_yarpp_keyword_cache set body = replace(body, 'í©', 'é');
update wp_yarpp_keyword_cache set body = replace(body, '–', '–');

update wp_yarpp_keyword_cache set title = replace(title, '–', '–');
update wp_yarpp_keyword_cache set title = replace(title, 'ñ', 'ñ');
update wp_yarpp_keyword_cache set title = replace(title, 'á', 'á');
update wp_yarpp_keyword_cache set title = replace(title, 'ó', 'ó');
update wp_yarpp_keyword_cache set title = replace(title, 'Ã', 'í');
update wp_yarpp_keyword_cache set title = replace(title, 'íº', 'ú');
update wp_yarpp_keyword_cache set title = replace(title, 'í©', 'é');
update wp_yarpp_keyword_cache set title = replace(title, 'ú', 'ú');
update wp_yarpp_keyword_cache set title = replace(title, 'í‘', 'Ñ');

Por el momento asi me ha funcionado, aun tengo pendiente revisar las tablas de comentarios y agregar aca el codigo SQL. Aca podran encontrar un listado de carácteres ISO 8859-1 Latin-1.

Terminos de busqueda

  • replace mysql
  • reemplazar mysql
  • buscar y reemplazar mysql
  • mysql replace
  • update replace mysql
  • reemplazar sql
  • sql reemplazar texto
  • replace mysql ejemplo
  • reemplazar en mysql
  • mysql update replace
  • 17 thoughts on “MySQL: Buscar y Reemplazar texto con SQL

    1. Reply JOSE Jul 21,2009 00:24

      OYE!!!!!!!!!!!!!

      NO SOY CODDER NI NADA DE ESO, SOLO UN OLDSCHOOL WEBMASTER, Y LUEGO DE INVESTIGAR MUCHISISISIMO ACERCA DE TODOS ESTOS CAMBIOS Y TRASPASOS DE DATABASES Y SUS COALICIONES Y CHARSETS….

      Simplemente se me ocurria al no ver ninguna solucion efectiva al seguir miles de fixes, que lo mejor era dejar quietos los charsets convertidos en todas partes para no ir a fallar y claro, pues convertir los malos caracteres SIN HACERLO MANUALMENTE como decian en muchas partes que era la unica opcion, y creelo luego de muchisisiismas lecturas, codex, foros, google, mysql PAGINAS, di con esta maravillosa consultaaaaa!!!

      TE AMOOOOOOOOOOOOOO JAJAJAJAJA!

      Me gustaria conocer el resto de la solucion para los comments hermano,

      Saludos desde Colombia

    2. Reply JOSE Jul 21,2009 00:25

      ah y te falto la é !

      QUE ME IMAGINO ES:
      update wp_posts set post_title = replace(post_title, ‘í©’, ‘é’);
      update wp_posts set post_content = replace(post_content, ‘í©’, ‘é’);

      ya mismo la consulto 😀 😀 😀 😀

    3. Reply Alfredo Morales Jul 21,2009 22:35

      Hola,
      Gracias por el tuto, me sirvió para otra cosa, pero igual gracias, sin embargo el problema que tuviste tenía una solución más simple… prueba cambiando la codificación del archivo sql del backup… la mayoría de los editores PRO te permiten seleccionar la codificación del archivo al guardarlo… por lo general sirve a la primera si lo guardas como iso-8859-1, sino UTF-8… esta es la codificación de archivo en sí, es independiente a la codificación con la que genera el archivo el servidor… muchas veces el sistema operativo cambia esa codificación, sobre todo si tocaste el archivo con notepad de Windows, que no respeta la codificación original del archivo.
      Saludos.

    4. Reply felix Jul 30,2009 09:32

      Muchas gracias, he buscado este tema desde el inicio de los tiempos, abusando de tu gentileza, me podrias decir, por favor, las equivalencias de las mayusculas:

      Á É Í Ó Ú

      Gracias

    5. Reply Kalk-ammonya Aug 12,2009 01:55

      Ola!!

      Mil gracias, después de la mudanza de WP estaba volviéndose un infierno lidiar con enlaces rotos… ésto lo arregló!!

      Un abrazo

    6. Reply Lucas Aug 21,2009 10:21

      Gracias por la data.

      Con ese mismo comando se puede reemplazar todo tipo de información dentro de los campos utilizando las consultas de SQL.

      Ejemplo: cambio de ubicación de archivos en un directorio:

      update wp_postmeta set meta_value = replace(meta_value, ‘/wp-content/’, ‘/wordpress/wp-content/’)

      esto reemplaza parte de la vieja ubicación /wp-content/ a donde estaban los archivos por una nueva /wordpress/wp-content/

      Saludos…

    7. Reply Chiqui Dec 8,2009 14:32

      Magnifico tu post, ya pude cambiar todos esos simbolos raros de mis titulos y de mis post pero aun no he podido con las categorias, cual es la sentencia para modificar tambien las categorias?

    8. Reply Jemunoz Dec 8,2009 15:03

      No te preocupes por contestarme, no habia leido tu post completo, con la sentencia que compartiste: “UPDATE tabla SET campo = REPLACE(campo,’texto a buscar’,’nuevo texto’);” logre hacer todos mis cambios en toda la base de datos.

      Nuevamente Gracias!

      Un post genial el tuyo.

    9. Reply Ricky Jan 29,2010 13:05

      Muchisimas gracias. Muy util 😀

    10. Reply Ikiam Apr 20,2010 09:47

      excelente me sirvio de mucho en verdad… ya estaba doliendome la cabeza solo de pensar en cambiar dato por dato de una url perdida en los comentarios,,, tenia k modificar como 300.. me salvaste, saludos…

    11. Reply oliver Aug 27,2010 08:53

      Amigo.

      Gracias…

      muy buena ayuda.

    12. Reply Jaume Marín Oct 7,2010 17:32

      Muy útil especialmente cuando migramos de un wordpress antiguo a una versión tipo 3.0, pues el actualizador de base de datos cambia los acentos por precisamente esos símbolos raros.

      Lanzar la secuencia propuesta deja las cosas en su sitio.

      Grande, me salvaste la vida!

      Jaume

    13. Reply hackzgz Oct 15,2010 06:58

      Tio eres dios, esto es justo lo que necesitaba, hasta ya creia que no se podia hacer.

      muchisimas gracias!!

    14. Reply vuelosdebajocoste Jun 3,2011 17:46

      Gracias por el aporte justo estoy migrando mi blog y esto me ha venido de maravillas. Gracias!

    15. Reply Thrux Jun 28,2011 14:19

      Y como quedarían las MAYÚSCULAS ACENTUADAS?

    16. Reply joseluis Jun 6,2013 11:39

      Hola amigo, yo quiero reemplazar comillas por texto como le hago??? gracias..

    Comentario, Preguntas o agradecimientos?

    %d bloggers like this: