sql >> Databáze >  >> RDS >> Mysql

Jak změnit řazení všech řádků z latin1_swedish_ci na utf8_unicode_ci?

Pokud sloupce používají výchozí znakovou sadu tabulky, převede se pouze jeden dotaz na tabulku:

ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Pokud je znaková sada nastavena individuálně pro každý sloupec, AFAIK neexistuje způsob, jak to udělat ve všech sloupcích všech tabulek v databázi přímo v MySql, ale můžete napsat malý program ve vašem jazyce, který to udělá.

Váš program by se zeptal na INFORMATION_SCHEMA.COLUMNS a podívejte se na CHARACTER_SET_NAME sloupec:

SELECT * FROM `INFORMATION_SCHEMA.COLUMNS`
WHERE TABLE_SCHEMA = 'dbname' AND CHARACTER_SET_NAME = 'latin1'

Pro každý řádek výsledků je triviální syntetizovat a spustit ALTER TABLE dotaz na místě, který vhodně změní znakovou sadu a řazení:

ALTER TABLE t MODIFY col TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Ve výše uvedeném dotazu t , col a TEXT by byly hodnoty TABLE_NAME , COLUMN_NAME a DATA_TYPE sloupce z INFORMATION_SCHEMA.COLUMNS sada výsledků.



  1. K čemu slouží ovladač jdbc org.gjt.mm.mysql.Driver?

  2. Proč MySQL COUNT bez názvu tabulky dává 1

  3. 15 užitečných tipů pro ladění a optimalizaci výkonu MySQL/MariaDB

  4. Jak mohu samostatně počítat a seskupovat sloupce pomocí MySQL?