Posted By

rolandog on 03/02/09


Tagged

wordpress utf8 latin1


Versions (?)


Advertising

Website Promotion DIRECTORY is a crucial factor for all websites that need to gain better organic search engine rankings and increase website traffic.
Submitting your website as part of your Web Promotion strategy to our SEO friendly and high traffic Business Directory for review is an excellent way to gain a valuable backlink and increase your websites visibility online.

Submit Site


Who likes this?

1 person has marked this snippet as a favorite

luman


Conversión de Latin1 a UTF8


Published in: MySQL 






URL: http://rolandog.com

Expand | Embed | Plain Text
  1. /* ¡IMPORTANTE!
  2.  * Este es un tutorial para convertir la codificación de bases de datos de
  3.  * latin1 a utf8. MySQL anteriormente solo utilizaba codificación latin1, y una
  4.  * colación latin1_swedish_ci.
  5.  */
  6.  
  7. /* Algoritmo:
  8.  * Al convertir los campos a su valor en binario, se puede cambiar la
  9.  * codificación, sin tener que preocuparse por los caracteres especiales:
  10.  * CHAR -> BINARY
  11.  * VARCHAR -> VARBINARY
  12.  * TINYTEXT -> TINYBLOB
  13.  * TEXT -> BLOB
  14.  * MEDIUMTEXT -> MEDIUMBLOB
  15.  * LONGTEXT -> LONGBLOB
  16.  * Los siguientes queries nos ayudan en convertir a y regresar de binario.
  17. */
  18.  
  19. /* MyDb
  20.  * Se infiere que la base de datos se llama MyDb.
  21.  */
  22.  
  23. /* Correr en information_schema
  24.  * El código SQL de estos queries se debe correr en la base de datos llamada
  25.  * information_schema. Los queries generan código SQL que se debe correr en la
  26.  * base de datos 'MyDb'.
  27.  */
  28. USE information_schema;
  29.  
  30. /* I. Identificar binarios preexistentes
  31.  * Este SQL -- así como el siguiente paso -- es un paso de precaución; hay que
  32.  * anotar los campos que aparezcan aquí, para identificar cuáles campos ya eran
  33.  * de tipo binario. Si no aparecen campos, es motivo de alegría.
  34.  */
  35. SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'binary', 'char'), ';') FROM COLUMNS WHERE table_schema = 'MyDb' AND data_type LIKE '%binary%';
  36.  
  37. /* II. Identificar blobs preexistentes
  38.  * Este SQL también es un paso de precaución; hay que anotar los campos que
  39.  * aparezcan aquí. Aquí buscamos los campos de tipo blob. Si no aparecen
  40.  * campos, es motivo de alegría.
  41.  */
  42. SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'blob', 'text'), ';') FROM COLUMNS WHERE table_schema = 'MyDb' AND data_type LIKE '%blob%';
  43.  
  44. /* III. CHAR -> BINARY
  45.  * Conversión de cualquier tipo de Char a su correspondiente Binario.
  46.  */
  47. SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'char', 'binary'), ';') FROM COLUMNS WHERE table_schema = 'MyDb' AND data_type LIKE '%char%';
  48.  
  49. /* IV. TEXT -> BLOB
  50.  * Conversión de cualquier tipo de Texto a su correspondiente Blob.
  51.  */
  52. SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'text', 'blob'), ';') FROM COLUMNS WHERE table_schema = 'MyDb' AND data_type LIKE '%text%';
  53.  
  54. /* V. Convertir MyDb de latin1 a utf8
  55.  * Esto convierte y asigna una colación en Unicode a la base de datos. Pero aún
  56.  * falta considerar las tablas y los campos en particular.
  57.  */
  58. ALTER DATABASE MyDb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
  59.  
  60. /* VI. Convertir Tablas de MyDb de latin1 a utf8
  61.  * Este query es para cambiar la codificación de las tablas.
  62.  */
  63. SELECT CONCAT('ALTER TABLE ', table_name, ' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;') FROM tables WHERE table_schema = 'MyDb';
  64.  
  65. /* VII. Convertir Campos de tipo Char de las Tablas de MyDb de latin1 a utf8
  66.  * Este query es para cambiar la codificación los chars de las tablas.
  67.  */
  68. SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8 COLLATE utf8_unicode_ci;') FROM COLUMNS WHERE table_schema = 'MyDb' AND data_type LIKE '%char%';
  69.  
  70. /* VIII. Convertir Campos de tipo Text de las Tablas de MyDb de latin1 a utf8
  71.  * Este query es para cambiar la codificación los textos de las tablas.
  72.  */
  73. SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8 COLLATE utf8_unicode_ci;') FROM COLUMNS WHERE table_schema = 'MyDb' AND data_type LIKE '%text%';
  74.  
  75. /* IX. BINARY -> CHAR
  76.  * Convierte los binarios a chars. Hay que manualmente eliminar queries de los
  77.  * resultados de el paso I.
  78.  */
  79. SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'binary', 'char'), ';') FROM COLUMNS WHERE table_schema = 'MyDb' AND data_type LIKE '%binary%';
  80.  
  81. /* X. BLOB -> TEXT
  82.  * Revierte los blobs a textos. Hay que manualmente eliminar queries de los
  83.  * resultados de el paso II.
  84.  */
  85. SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'blob', 'text'), ';') FROM COLUMNS WHERE table_schema = 'MyDb' AND data_type LIKE '%blob%';

Report this snippet 

You need to login to post a comment.

Download royalty free graphics