Cómo modificar tablas a UTF8 MySQL

Imaginemos una aplicación con la base de datos de mysql. En ella editamos información por ejemplo, de usuarios.

Todo es bonito y precioso.

Hasta! que decides exportar información a csv, hacer un volcado de datos y exportarlo a otra base de datos… etc.

¿Por qué? ¡Se ven mal los acentos, ñññññ y muchos caracteres!

Si estás en este caso, es que tienes mezclados los charset. Familiarizate con COLLATION y CHARSET.

http://dev.mysql.com/doc/refman/5.0/es/charset-mysql.html

Es mejor que utilices por compatibilidad UTF8.

Mysql por defecto crea collation a ‘latin1_swedish_ci’. Para arreglar los datos deberás hacer lo siguiente:

Si lo haces desde consola:

  1. Modificar la tabla

ALTER TABLE `caracteristicas_subtipos`
COLLATE=’utf8_general_ci’;

  1. Exportar los datos por medio de inserts Hacer truncate de la tabla.
    • Mediante volcado mysqldump -p –default-character-set=utf8  base_de_datos tabla_a_modificar > tabla_a_modificar.sql
  2. Volcar los datos.
    • Mediante mysql -p base_de_datos < tabla_a_modificar.sql

Si lo haces desde una herramienta de mysql:

Cambia sólo la forma de obtener los datos. Exporta los datos a INSERTS. Haz un truncate de la tabla. Antes de volcar los inserts pon la sentencia:

set names utf8;

FAQ:

Se puede hacer aplicado a todo un esquema?: No, tendrás que hacerlo tabla por tabla. Si alguien lo ha conseguido que lo comente!! sería un gran descubrimiento!

Agradecimientos:

A @rcasas  que me enseñó estas cosas tan chulas.

Anuncios

16 comentarios en “Cómo modificar tablas a UTF8 MySQL

  1. Para aplicarlo a un esquema de tablas de forma total:

    SELECT CONCAT(‘ALTER TABLE `’, t.`TABLE_SCHEMA`, ‘`.`’, t.`TABLE_NAME`, ‘` CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;’) as stmt
    FROM `information_schema`.`TABLES` t
    WHERE 1
    AND t.`TABLE_SCHEMA` = ‘database_name’
    ORDER BY 1

    Sólo hay que cambiar database_name por el nombre de nuestra base de datos.

    Nos devuelve en stmt todas las sentencias ALTER TABLE necesarias para modificar todas las tablas, sólo faltaría ejecutarlas mediante consola y con phpmyadmin.

    Un saludo, espero sea de ayuda.
    tecnocodigo

    1. Wow! Muchas gracias por compartir conocimiento. Me quito el sombrero. Es una muy buena solución.

      ¿Quieres que actualice el post con tu nombre y enlace a tu web?

    2. Estoy empezando a aprender esto y necesito cambiarlo a utf8_general_ci, este fue el error que me marca PHPMYADMIN consulta SQL: Documentación

      SELECT CONCAT(‘ALTER TABLE `’, t.`TABLE_SCHEMA`, ‘`.`’, t.`TABLE_NAME`, ‘` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;’) as stmt
      FROM `information_schema`.`TABLES` t
      WHERE 1
      AND t.`TABLE_SCHEMA` = ‘bitnami_wordpress’
      ORDER BY 1
      MySQL ha dicho: Documentación

      #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘TABLE `’, t.`TABLE_SCHEMA`, ‘`.`’, t.`TABLE_NAME`, ‘` CONVERT TO CHARACT’ at line 1

      Algún consejo?

    3. Soy nuevo en esto y necesito cambiarla a utf8_general_ci, pero al ejecutar la consulta me marca este error, espero me puedas responder que estoy algo estresado de intentar cambiar el cotejamiento, saludos 😀
      consulta SQL: Documentación

      SELECT CONCAT(‘ALTER TABLE `’, t.`TABLE_SCHEMA`, ‘`.`’, t.`TABLE_NAME`, ‘` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;’) as stmt
      FROM `information_schema`.`TABLES` t
      WHERE 1
      AND t.`TABLE_SCHEMA` = ‘bitnami_wordpress’
      ORDER BY 1
      MySQL ha dicho: Documentación

      #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘TABLE `’, t.`TABLE_SCHEMA`, ‘`.`’, t.`TABLE_NAME`, ‘` CONVERT TO CHARACT’ at line 1

      1. Hola Miguel! Desde donde estás lanzando la consulta? Prueba a lanzarlo desde otro entorno. Parece que está obteniendo la consulta en otro charset y la está codificando mal. Por ejemplo desde Heidi.

  2. ME PASA LO MISMO. Copio lo que ha dicho @tecnocodigo y me sale el siguiente error de sintaxis.

    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘TABLE `’, t.`TABLE_SCHEMA`, ‘`.`’, t.`TABLE_NAME`, ‘` CONVERT TO CHARACT’ at line 1

  3. es por las comillas:

    SELECT CONCAT(“ALTER TABLE `”, t.`TABLE_SCHEMA`, “`.`”, t.`TABLE_NAME`, “` CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;”) as stmt
    FROM `information_schema`.`TABLES` t
    WHERE 1
    AND t.`TABLE_SCHEMA` = “database_name”
    ORDER BY 1

  4. Hola y gracias por la ayuda !

    Sabría alguien indicar cuál es el error ?

    ———————————————————————————————————-
    Error

    consulta SQL: Documentación

    SELECT CONCAT( “ALTER
    TABLE `”, t.` TABLE_SCHEMA `, “`.`”, t.` TABLE_NAME `, “`
    CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;

    MySQL ha dicho: Documentación
    #1064 –
    ———————————————————————————————————-

    Saludos cordiales !

    1. Hola! El error “#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘)’ at line 6 “. Debe ser alguna comilla o paréntesis. Prueba primero a hacer un alter table de una tabla y luego ve a más con select Concat! Si puedes nos dices el resultado 🙂 . Un saludo!! y gracias por compartir!!

      1. SELECT CONCAT( ‘ALTER TABLE ‘, t.TABLE_SCHEMA, ‘.’, t.TABLE_NAME, ‘ CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;’ ) AS stmt
        FROM information_schema.TABLES t
        WHERE 1
        AND t.TABLE_SCHEMA = ‘database’
        ORDER BY 1
        LIMIT 0 , 30

  5. estoy intentando hacer una modificacion en la base de datos con respecto al cotejamiento y me aparecen los mismo errores de todos pero yo quisiera cambiar el cotejamiento de una sola fila pero no me funciona con ninguno que han publicado, y me aparece el error #1064
    Alguien que me pueda ayudar . Gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s