列がデフォルトのテーブル文字セットを使用している場合、変換するのはテーブルごとに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
の列 結果セット。