MySQL 批量修改數據表編碼及字符集


1. 修改數據庫編碼及字符集

這一步比較簡單,直接執行即可:

ALTER DATABASE db_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;

2. 修改數據表與表中字段的編碼及字符集

這里需要兩步。

首先,需要利用語句,生成所有實際執行的語句:

SELECT 
CONCAT("ALTER TABLE `", TABLE_NAME,"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;") 
AS target_tables
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="db_name"
AND TABLE_TYPE="BASE TABLE"

 

 

此語句會基於 MySQL 的元數據表,得到一組可直接執行的 SQL 列表,如下:

ALTER TABLE `table1` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE `table2` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE `table3` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE `table4` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE `table5` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE `table6` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

 

其中,table1 到 table6 即為數據庫中的所有數據表。

然后,直接將語句粘貼並執行即可。

注意,這里使用 CONVERT TO 而非 DEFAULT,是因為后者不會修改表中字段的編碼和字符集。

此外,對於數據表比較多的數據庫,可以先將第一步的執行結果導出到 .sql 文件,再通過該 SQL 文件執行即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM