sql >> Database >  >> RDS >> Mysql

Hoe verander ik de sortering van alle rijen van latin1_swedish_ci naar utf8_unicode_ci?

Als de kolommen de standaard tabeltekenset gebruiken, hoeft u slechts één query per tabel te converteren:

ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Als de tekenset voor elke kolom afzonderlijk is ingesteld, AFAIK, is er geen manier om dat op alle kolommen van alle tabellen in de database rechtstreeks in MySql te doen, maar je zou een klein programma kunnen schrijven in de taal van je keuze die dit wel doet.

Uw programma zou de INFORMATION_SCHEMA.COLUMNS tabel en kijk naar de CHARACTER_SET_NAME kolom:

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

Voor elke resultaatrij is het triviaal om een ​​ALTER TABLE te synthetiseren en uit te voeren vraag ter plaatse die de tekenset en sortering op de juiste manier verandert:

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

In de bovenstaande zoekopdracht t , col en TEXT zouden de waarden zijn van de TABLE_NAME , COLUMN_NAME en DATA_TYPE kolommen uit de INFORMATION_SCHEMA.COLUMNS resultatenset.



  1. Is er een manier om een ​​vervaltijd in te stellen, waarna een gegevensinvoer automatisch wordt verwijderd in PostgreSQL?

  2. Ik ben het wachtwoord vergeten dat ik tijdens de installatie van postgre heb ingevoerd

  3. postgresql COUNT (DISTINCT ...) erg traag

  4. WordPress MediaWiki-integratie