2014-09-22 81 views
1

我想更改我的數據庫中存在的所有表的字符集。 要更改字符集一個表,我可以執行它:如何在mysql中一次更改多個表

"alter table mydb.mytable1 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_Ci;"

,但我有我的「我的數據庫」數據庫許多表。 我們可以從information_schema表中讀取的表的列表。 但我不知道如何形成精確查詢,以便與一個查詢我可以一次更改所有表的字符集。

+0

你可以改變數據庫。 – Manwal 2014-09-22 10:21:07

回答

0

Alter Database

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci; 

注意:使用"utf8_unicode_ci"代替"utf8_general_ci"

所以,如果你不能做到這一點使用ALTER DB,那麼你必須爲每個表運行此單獨

+0

我試過這個選項。但是,如果我改變數據庫,它不會改變表的字符集。 – Pratik 2014-09-22 10:26:41

+0

@Pratik查看更新。它不能與單一的改變查詢你必須使用它們分開 – Manwal 2014-09-22 10:28:32

+0

或者是否有任何腳本/程序可以寫? – Pratik 2014-09-22 10:36:31

0
-- https://stackoverflow.com/a/39465494/819417 
SELECT concat('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'your_db_name' 

然後複製/粘貼所有結果,並使用db工具或腳本語言逐個運行它們。

要解決未來的表,因爲你添加它們,運行此還有:

ALTER DATABASE your_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;