14、修改字符集步骤详解
在實際應用中,如果一開始沒有正確的設置字符集,在運行一段時間以后,才發現當前字符集不能滿足要求,需要進行調整,但又不想丟棄這段時間的數據,這個時候就需要修改字符集。
ALTER DATABASE 或 ALTER TABLE 命令對已經存在的數據沒有作用,只對新創建的表或記錄生效。如果想修改已存在數據的字符集,需要先將數據導出,經過適當的調整后,再重新導入。
例 1
以下模擬的是將 gb2312 字符集的數據庫修改成 gbk 字符集的數據庫的過程。
1)創建 testset 數據庫,設置其字符集為 gb2312,并添加數據。
mysql> CREATE TABLE test.testset(-> id INT(11) DEFAULT NULL,-> name VARCHAR(25) DEFAULT NULL-> )CHARSET=gb2312; mysql> INSERT INTO test.testset VALUES (1,'C語言'); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO test.testset VALUES (2,'Java語言'); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO test.testset VALUES (3,'Python語言'); Query OK, 1 row affected (0.01 sec)2)導出 testset 表結構,命令如下:
mysqldump -uroot -p --default-character-set=gbk -d test testset> D:\testset.sql
其中,–default-character-set=gbk 表示以什么字符集連接;-d 表示只導出表結構,不導出數據。
3)打開 testset.sql 文件,修改表結構定義中的字符集為新的字符集,如下圖所示。
4)確保表中的記錄不再更新,導出所有記錄。
mysqldump -uroot -p --quick --no-create-info --extended-insert–default-character-set=gb2312 test testset> D:\testdata.sql
- –quick:該選項用于存儲記錄多的表。它強制 mysqldump 從服務器一次一行地查詢表中的行,而不是查詢所有行,并在輸出前將它緩存到內存中。
- –extended-insert:使用 INSERT 插入多行數據語法。可以使文件更小,導入文件時加速插入。
- –no-create-info:不導出表的 CREATE TABLE 語句。
- –default-character-set=gb2312:按照原有的字符集導出所有數據。這樣導出的文件中,所有中文都是可見的,不會保存成亂碼。
5)打開 testdata.sql,將 SET NAMES gb2312 修改成 SET NAMES gbk,如下圖所示。
6)使用新的字符集創建新的數據庫。
7)創建表,執行 testset.sql。
mysql -uroot -p test2 < D:\testset.sql8)導入數據,執行 testdata.sql。
mysql -uroot -p test2 < D:\testdata.sql9)查看 testset 表結構是否修改了字符集,以及表內數據是否丟失或亂碼,SQL 語句和運行結果如下:
mysql> SHOW CREATE TABLE test2.testset \G *************************** 1. row ***************************Table: testset Create Table: CREATE TABLE `testset` (`id` int(11) DEFAULT NULL,`name` varchar(25) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=gbk 1 row in set (0.00 sec) mysql> SELECT * FROM test2.testset; +------+------------+ | id | name | +------+------------+ | 1 | C語言 | | 2 | Java語言 | | 3 | Python語言 | +------+------------+ 3 rows in set (0.00 sec)注意:選擇目標字符集的時候,要注意最好的是原字符集的超集,或者確定比原字符集的字庫更大,否則如果目標字符集的字庫小于原字符集的字庫,那么目標字符集中不支持的字符導入后會變成亂碼,丟失一部分數據。
總結
以上是生活随笔為你收集整理的14、修改字符集步骤详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 13、设置默认字符集和校对规则
- 下一篇: 1、user权限表详解