背景:
我的jira数据库中已有数据,想修改数据集,不能通过简单的修改字符集完成,需要先将原数据导出,经过适当调整后重新导入才可完成。
下面的步骤可以进行问题的解决(假设原字符集是latin1,想修改成GBK)。
- 1、导出表结构:
mysqldump -uroot -p --default-character-set=utf8 -d jiradatabasename>createdb.sql
说明:
--default-character-set=utf8 表示设置以什么字符集连接;
-d 表示只导出表结构,不导出数据。 - 2、手工修改createdb.sql中表结构定义中的字符集(latin1)为新的字符集(utf8);
- 3、确保数据库中的数据不再更新,导出所有的数据:
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 databasename>data.sql
说明:
--quick 该选项用于转储大的表,它强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行,并在输出前将它缓存到内存中;
--extended-insert 使用包括几个values的多行insert语法;
--no-create-info 不要create table语句;
--default-character-set=latin1 表示按照原有的字符集导出所有的数据。 - 4、打开data.sql,将set names latin1修改成set names utf8;
- 5、删除原有的库,使用新的字符集创建数据库:
create database databasename default charset utf8; - 6、创建表:
mysql -uroot -p databasename < createdb.sql - 7、导入数据:
mysql -uroot -p databasename < data.sql