列がデフォルトのテーブル文字セットを使用している場合、変換するのはテーブルごとに1つのクエリだけです:
ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
文字セットが各列に個別に設定されている場合、データベース内のすべてのテーブルのすべての列で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の列 結果セット。