Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да променя съпоставянето на всички редове от latin1_swedish_ci на utf8_unicode_ci?

Ако колоните използват набора от символи на таблицата по подразбиране, тогава е само една заявка на таблица за преобразуване:

ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Ако наборът от знаци е зададен индивидуално за всяка колона, AFAIK няма начин да направите това за всички колони на всички таблици в базата данни директно в MySql, но можете да напишете малка програма на избран от вас език, която го прави.

Вашата програма ще поиска INFORMATION_SCHEMA.COLUMNS таблица и погледнете CHARACTER_SET_NAME колона:

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

За всеки ред с резултати е тривиално да се синтезира и изпълни ALTER TABLE заявка на място, която променя набора от знаци и съпоставянето по подходящ начин:

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

В горната заявка t , col и TEXT ще бъдат стойностите на TABLE_NAME , COLUMN_NAME и DATA_TYPE колони от INFORMATION_SCHEMA.COLUMNS набор от резултати.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL родител -> дъщерна заявка

  2. свързаността с базата данни се проваля след създаване на jar файл

  3. Записване на времева марка в mysql таблица с помощта на php

  4. Група по седмица, как да получите празни седмици?

  5. Използване на MySQL клиентски приложения