Bonaval Multimedia

Tutorial para convertir la codificación de bases de datos de latin1 a utf8

MENU

  • Inicio
  • Empresa
    • Quienes somos
    • Noticias
    • KB: Blog IT
  • Soluciones
    • Nuestras soluciones
    • Aplicaciones a medida
    • Soluciones web para la alimentación y congelado
    • Soluciones web para el turismo y los hoteles
    • Comercio on line
    • Movilidad: webs y apps
    • Sistemas GIS
    • Media: Vídeo Streamer, DVD
    • SEO - Posicionamiento en buscadores
    • Diseño y desarrollo web en Joomla CMS
    • Sistemas Expertos: Audiencias TV
  • Servicios
    • Qué ofrecemos
    • Alojamiento Simple y Avanzado
    • Servidor Virtual
    • Atención al cliente
  • Contacto
  • Home
  • KB
  • Sistemas
  • Bases de datos
  • Mysql
  • Tutorial para convertir la codificación de bases de datos de latin1 a utf8

Tutorial para convertir la codificación de bases de datos de latin1 a utf8

Copio el código completo:
/* ¡IMPORTANTE!
* Este es un tutorial para convertir la codificación de bases de datos de
* latin1 a utf8. MySQL anteriormente solo utilizaba codificación latin1, y una
* colación latin1_swedish_ci.
*/
/* Algoritmo:
* Al convertir los campos a su valor en binario, se puede cambiar la
* codificación, sin tener que preocuparse por los caracteres especiales:
* CHAR -> BINARY
* VARCHAR -> VARBINARY
* TINYTEXT -> TINYBLOB
* TEXT -> BLOB
* MEDIUMTEXT -> MEDIUMBLOB
* LONGTEXT -> LONGBLOB
* Los siguientes queries nos ayudan en convertir a y regresar de binario.
*/

/* gpm_utf8
* Se infiere que la base de datos se llama gpm_utf8.
*/

/* Correr en information_schema
* El código SQL de estos queries se debe correr en la base de datos llamada
* information_schema. Los queries generan código SQL que se debe correr en la
* base de datos 'gpm_utf8'.
*/
USE information_schema;

/* I. Identificar binarios preexistentes
* Este SQL -- así como el siguiente paso -- es un paso de precaución; hay que
* anotar los campos que aparezcan aquí, para identificar cuáles campos ya eran
* de tipo binario. Si no aparecen campos, es motivo de alegría.
*/
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'binary', 'char'), ';') FROM COLUMNS WHERE table_schema = 'gpm_utf8' AND data_type LIKE '%binary%';

/* II. Identificar blobs preexistentes
* Este SQL también es un paso de precaución; hay que anotar los campos que
* aparezcan aquí. Aquí buscamos los campos de tipo blob. Si no aparecen
* campos, es motivo de alegría.
*/
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'blob', 'text'), ';') FROM COLUMNS WHERE table_schema = 'gpm_utf8' AND data_type LIKE '%blob%';

/* III. CHAR -> BINARY
* Conversión de cualquier tipo de Char a su correspondiente Binario.
*/
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'char', 'binary'), ';') FROM COLUMNS WHERE table_schema = 'gpm_utf8' AND data_type LIKE '%char%';

/* IV. TEXT -> BLOB
* Conversión de cualquier tipo de Texto a su correspondiente Blob.
*/
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'text', 'blob'), ';') FROM COLUMNS WHERE table_schema = 'gpm_utf8' AND data_type LIKE '%text%';

/* V. Convertir gpm_utf8 de latin1 a utf8
* Esto convierte y asigna una colación en Unicode a la base de datos. Pero aún
* falta considerar las tablas y los campos en particular.
*/
ALTER DATABASE gpm_utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

/* VI. Convertir Tablas de gpm_utf8 de latin1 a utf8
* Este query es para cambiar la codificación de las tablas.
*/
SELECT CONCAT('ALTER TABLE ', table_name, ' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;') FROM tables WHERE table_schema = 'gpm_utf8';

/* VII. Convertir Campos de tipo Char de las Tablas de gpm_utf8 de latin1 a utf8
* Este query es para cambiar la codificación los chars de las tablas.
*/
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8 COLLATE utf8_unicode_ci;') FROM COLUMNS WHERE table_schema = 'gpm_utf8' AND data_type LIKE '%char%';

/* VIII. Convertir Campos de tipo Text de las Tablas de gpm_utf8 de latin1 a utf8
* Este query es para cambiar la codificación los textos de las tablas.
*/
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8 COLLATE utf8_unicode_ci;') FROM COLUMNS WHERE table_schema = 'gpm_utf8' AND data_type LIKE '%text%';

/* IX. BINARY -> CHAR
* Convierte los binarios a chars. Hay que manualmente eliminar queries de los
* resultados de el paso I.
*/
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'binary', 'char'), ';') FROM COLUMNS WHERE table_schema = 'gpm_utf8' AND data_type LIKE '%binary%';

/* X. BLOB -> TEXT
* Revierte los blobs a textos. Hay que manualmente eliminar queries de los
* resultados de el paso II.
*/
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'blob', 'text'), ';') FROM COLUMNS WHERE table_schema = 'gpm_utf8' AND data_type LIKE '%blob%';
15 Febrero 2011 | Mysql
  • Anterior
  • Siguiente

Categorías [KB]

  • Aplicaciones y frameworks (1)
  • Desarrollo web (14)
    • Wordpress (9)
    • Joomla (16)
    • Prestashop (1)
  • Tips & Tricks (5)
  • Cheats (9)
  • Diseño (5)
  • Legal (5)
    • Protección de datos (0)
  • Marketing y publicidad (1)
  • RRHH (1)
  • Redes Sociales (3)
  • Seo (4)
  • Sistemas (2)
    • Bases de datos (0)
      • Mysql (6)
    • Seguridad (1)
    • Correo (9)
    • Debian (4)
    • Plesk (4)
    • Redes (11)
    • Servidor web (5)
      • Apache (6)
  • Sistemas Operativos (1)
    • Linux (18)
    • Windows (4)
 
  • Aviso legal
  • Noticias
  • File Store
  • KB
  • Kit Digital
  • Polícita de Privacidad
  • Política de cookies