Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zmienić sortowanie wszystkich wierszy z latin1_swedish_ci na utf8_unicode_ci?

Jeśli kolumny używają domyślnego zestawu znaków tabeli, konwertowane jest tylko jedno zapytanie na tabelę:

ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Jeśli zestaw znaków jest ustawiony indywidualnie dla każdej kolumny, AFAIK nie ma możliwości zrobienia tego we wszystkich kolumnach wszystkich tabel w bazie danych bezpośrednio w MySql, ale możesz napisać mały program w wybranym języku, który to robi.

Twój program zapyta INFORMATION_SCHEMA.COLUMNS tabeli i spójrz na CHARACTER_SET_NAME kolumna:

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

Dla każdego wiersza wynikowego trywialne jest zsyntetyzowanie i wykonanie ALTER TABLE zapytanie w miejscu, które odpowiednio zmienia zestaw znaków i sortowanie:

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

W powyższym zapytaniu t , kol i TEKST byłyby wartościami TABLE_NAME , COLUMN_NAME i DATA_TYPE kolumny z INFORMATION_SCHEMA.COLUMNS zestaw wyników.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ostrzeżenie:mysqli_stmt::bind_param():Liczba zmiennych nie odpowiada liczbie parametrów w przygotowanej instrukcji

  2. Jak wstawić dane pliku csv do bazy danych mysql

  3. usuń zduplikowane pola w wierszach wyników php-mysql

  4. Wartość strefy czasowej serwera „AEST” jest nierozpoznana lub reprezentuje więcej niż jedną strefę czasową

  5. Warunkowe zapytanie agregujące z grupą według