MySQL: Buscar y Reemplazar texto con SQL

09/02/2009
By

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.

Popularity: 10% [?]


Otros articulos de interes:

  1. MySQL: Como buscar y reemplazar texto en todas las tablas de una base de datos
  2. Buscar y Reemplazar texto en todos los archivos dentro de un directorio y todos los subdirectorios
  3. Buscar y Reemplazar – Expresiones Regulares en Vi
  4. Linux: Grep o sed para buscar y borrar lineas de archivos que contengan el texto que coincida
  5. Elementos de HTML

Tags: archivo de texto, enie, la migracion, tildes

17 Responses to MySQL: Buscar y Reemplazar texto con SQL

  1. Thrux on 28/06/2011 at 14:19

    Y como quedarían las MAYÚSCULAS ACENTUADAS?

  2. vuelosdebajocoste on 03/06/2011 at 17:46

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

  3. hackzgz on 15/10/2010 at 06:58

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

    muchisimas gracias!!

  4. Jaume Marín on 07/10/2010 at 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

  5. oliver on 27/08/2010 at 08:53

    Amigo.

    Gracias…

    muy buena ayuda.

Leave a Reply

Your email address will not be published. Required fields are marked *

*