欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

mysql字符集更改与导入数据_MySQL

程序员文章站 2022-05-20 10:39:07
...

mysql 字符集更改与导入数据

mysqldb经常有中文乱码的问题,解决起来很恼火。其实所有开发和数据库统一为一种编码就可以了: utf8。

1 下面修改mysql的编码

1) 永久修改. 在/etc/mysql/my.cnf中添加下面二行:

[client]
...
default-character-set=utf8
...

[mysqld]
...
character-set-server=utf8
...

重启服务,然后登录看看:

$ sudo /etc/init.d/mysql restart
$ mysql -u root -p abc123 -h 127.0.0.1 --local-infile=1
# 显示字符集
#   mysql> show variables like 'character_set_%';
# 显示字符排列顺序
#   mysql> show variables like 'collation_%';

应该如下显示:

mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.01 sec)

2) 临时修改,登录mysql后执行下面的命令:

delimiter |
SET GLOBAL character_set_client = utf8 |
SET GLOBAL character_set_connection = utf8 |
SET GLOBAL character_set_database = utf8 |
SET GLOBAL character_set_results = utf8 |
SET GLOBAL character_set_server = utf8 |
SET GLOBAL collation_connection = utf8_general_ci |
SET GLOBAL collation_database = utf8_general_ci |
SET GLOBAL collation_server = utf8_general_ci |
delimiter ;

这之后,所有的数据文件,程序都统一为utf8编码。

2 下面导入数据,首先创建表prov和city:

登录mysql (注意--local-infile=1启用数据导入功能):

mysql -u root -p abc123 -h 127.0.0.1 --local-infile=1

mysql> source metadb.cresql

1) metadb.cresql内容如下:

#-----------------------------------------------------------------------
# metadb.cresql
#   copyright by cheungmine
#   -- create sql for database metadb
# $ mysql -u root -p abc123 -h 127.0.0.1 --local-infile=1
#-----------------------------------------------------------------------
delimiter |
############################### BEGIN ##################################
SET GLOBAL character_set_client = utf8 |
SET GLOBAL character_set_connection = utf8 |
SET GLOBAL character_set_database = utf8 |
SET GLOBAL character_set_results = utf8 |
SET GLOBAL character_set_server = utf8 |
SET GLOBAL collation_connection = utf8_general_ci |
SET GLOBAL collation_database = utf8_general_ci |
SET GLOBAL collation_server = utf8_general_ci |
show variables like 'character_set_%' |
show variables like 'collation_%' |

create database if not exists metadb character set utf8 |
alter database metadb default character set utf8 collate utf8_general_ci |

drop table if exists metadb.`city` |
drop table if exists metadb.`prov` |

create table metadb.`prov` (
  `prov_code` int(2) not null primary key comment '省代码',
  `prov_name` varchar(30) not null comment '省名称',
  unique key `uk_prov_name` (`prov_name`)
) engine=innodb default charset=utf8 comment='省、自治区表' |


create table metadb.`city` (
  `city_code` int(4) not null primary key comment '市代码',
  `city_name` varchar(30) not null comment '市名称',
  `prov_code` int(2) not null comment '省代码',
  constraint `fk_city_prov_code` foreign key (`prov_code`) references metadb.`prov` (`prov_code`),
  unique key `uk_city_name` (`city_name`),
  key `idx_city_prov` (`prov_code`)
) engine=innodb default charset=utf8 comment='省辖市表' |


load data local infile './metadb-prov.dat' into table metadb.`prov`
    fields terminated by ','
    lines terminated by '\n' |

load data local infile './metadb-city.dat' into table metadb.`city`
    fields terminated by ','
    lines terminated by '\n' |

# show encoding for metadb
use metadb |
SET character_set_client = utf8 |
SET character_set_connection = utf8 |
SET character_set_database = utf8 |
SET character_set_results = utf8 |
SET character_set_server = utf8 |
SET collation_connection = utf8_general_ci |
SET collation_database = utf8_general_ci |
SET collation_server = utf8_general_ci |
show variables like 'character_set_%' |
show variables like 'collation_%' |
################################ END ###################################
delimiter ;



2) utf8编码的数据文件内容如下:

metadb-prov.dat:

11,北京市
12,天津市
13,河北省
14,山西省
15,内蒙古自治区
21,辽宁省
22,吉林省
23,黑龙江省
31,上海市
32,江苏省
33,浙江省
34,安徽省
35,福建省
36,江西省
37,山东省
41,河南省
42,湖北省
43,湖南省
44,广东省
45,广西壮族自治区
46,海南省
50,重庆市
51,四川省
52,贵州省
53,云南省
54,*自治区
61,陕西省
62,甘肃省
63,青海省
64,宁夏回族自治区
65,**自治区
71,*省
81,香港特别行政区
82,澳门特别行政区

metadb-city.dat:

1100,北京市,11
1200,天津市,12
3100,上海市,31
5000,重庆市,50
7100,*,71
8100,香港,81
8200,澳门,82
1301,石家庄市,13
1302,唐山市,13
1303,秦皇岛市,13
1304,邯郸市,13
1305,邢台市,13
1306,保定市,13
1307,张家口市,13
1308,承德市,13
1309,沧州市,13
1311,衡水市,13
1401,太原市,14
1402,大同市,14
1403,阳泉市,14
1404,长治市,14
1405,晋城市,14
1406,朔州市,14
1407,晋中市,14
1408,运城市,14
1409,忻州市,14
1411,吕梁市,14
1501,呼和浩特市,15
1502,包头市,15
1503,乌海市,15
1504,赤峰市,15
1505,通辽市,15
1506,鄂尔多斯市,15
1507,呼伦贝尔市,15
1508,巴彦淖尔市,15
1509,乌兰察布市,15
1522,兴安盟,15
1525,锡林郭勒盟,15
1529,阿拉善盟,15
2101,沈阳市,21
2102,大连市,21
2103,鞍山市,21
2104,抚顺市,21
2105,本溪市,21
2106,丹东市,21
2107,锦州市,21
2108,营口市,21
2109,阜新市,21
2111,盘锦市,21
2112,铁岭市,21
2113,朝阳市,21
2114,葫芦岛市,21
2201,长春市,22
2202,吉林市,22
2203,四平市,22
2204,辽源市,22
2205,通化市,22
2206,白山市,22
2207,*市,22
2208,白城市,22
2224,延边朝鲜族自治州,22
2301,哈尔滨市,23
2302,齐齐哈尔市,23
2303,鸡西市,23
2304,鹤岗市,23
2305,双鸭山市,23
2306,大庆市,23
2307,伊春市,23
2308,佳木斯市,23
2309,七台河市,23
2311,黑河市,23
2312,绥化市,23
2327,大兴安岭地区,23
3201,南京市,32
3202,无锡市,32
3203,徐州市,32
3204,常州市,32
3205,苏州市,32
3206,南通市,32
3207,连云港市,32
3208,淮安市,32
3209,盐城市,32
3211,镇江市,32
3212,泰州市,32
3213,宿迁市,32
3301,杭州市,33
3302,宁波市,33
3303,温州市,33
3304,嘉兴市,33
3305,湖州市,33
3306,绍兴市,33
3307,金华市,33
3308,衢州市,33
3309,舟山市,33
3311,丽水市,33
3401,合肥市,34
3402,芜湖市,34
3403,蚌埠市,34
3404,淮南市,34
3405,马鞍山市,34
3406,淮北市,34
3407,铜陵市,34
3408,安庆市,34
3411,滁州市,34
3412,阜阳市,34
3413,宿州市,34
3415,六安市,34
3416,亳州市,34
3417,池州市,34
3418,宣城市,34
3501,福州市,35
3502,厦门市,35
3503,莆田市,35
3504,三明市,35
3505,泉州市,35
3506,漳州市,35
3507,南平市,35
3508,龙岩市,35
3509,宁德市,35
3601,南昌市,36
3602,景德镇市,36
3603,萍乡市,36
3604,九江市,36
3605,新余市,36
3606,鹰潭市,36
3607,赣州市,36
3608,吉安市,36
3609,宜春市,36
3611,上饶市,36
3701,济南市,37
3702,青岛市,37
3703,淄博市,37
3704,枣庄市,37
3705,东营市,37
3706,烟台市,37
3707,潍坊市,37
3708,济宁市,37
3709,泰安市,37
3711,日照市,37
3712,莱芜市,37
3713,临沂市,37
3714,德州市,37
3715,聊城市,37
3716,滨州市,37
3717,菏泽市,37
4101,郑州市,41
4102,开封市,41
4103,洛阳市,41
4104,平顶山市,41
4105,安阳市,41
4106,鹤壁市,41
4107,新乡市,41
4108,焦作市,41
4109,濮阳市,41
4111,漯河市,41
4112,三门峡市,41
4113,南阳市,41
4114,商丘市,41
4115,信阳市,41
4116,周口市,41
4117,驻马店市,41
4201,武汉市,42
4202,黄石市,42
4203,十堰市,42
4205,宜昌市,42
4206,襄阳市,42
4207,鄂州市,42
4208,荆门市,42
4209,孝感市,42
4211,黄冈市,42
4212,咸宁市,42
4213,随州市,42
4228,恩施土家族苗族自治州,42
4301,长沙市,43
4302,株洲市,43
4303,湘潭市,43
4304,衡阳市,43
4305,邵阳市,43
4306,岳阳市,43
4307,常德市,43
4308,张家界市,43
4309,益阳市,43
4311,永州市,43
4312,怀化市,43
4313,娄底市,43
4331,湘西土家族苗族自治州,43
4401,广州市,44
4402,韶关市,44
4403,深圳市,44
4404,珠海市,44
4405,汕头市,44
4406,佛山市,44
4407,江门市,44
4408,湛江市,44
4409,茂名市,44
4412,肇庆市,44
4413,惠州市,44
4414,梅州市,44
4415,汕尾市,44
4416,河源市,44
4417,阳江市,44
4418,清远市,44
4419,东莞市,44
4451,潮州市,44
4452,揭阳市,44
4453,云浮市,44
4501,南宁市,45
4502,柳州市,45
4503,桂林市,45
4504,梧州市,45
4505,北海市,45
4506,防城港市,45
4507,钦州市,45
4508,贵港市,45
4509,玉林市,45
4511,贺州市,45
4512,河池市,45
4513,来宾市,45
4514,崇左市,45
4601,海口市,46
4602,三亚市,46
5101,成都市,51
5103,自贡市,51
5104,攀枝花市,51
5105,泸州市,51
5106,德阳市,51
5107,绵阳市,51
5108,广元市,51
5109,遂宁市,51
5111,乐山市,51
5113,南充市,51
5114,眉山市,51
5115,宜宾市,51
5116,广安市,51
5117,达州市,51
5118,雅安市,51
5119,巴中市,51
5132,阿坝藏族羌族自治州,51
5133,甘孜藏族自治州,51
5134,凉山彝族自治州,51
5201,贵阳市,52
5202,六盘水市,52
5203,遵义市,52
5204,安顺市,52
5205,毕节市,52
5206,铜仁市,52
5223,黔西南布依族苗族自治州,52
5226,黔东南苗族侗族自治州,52
5227,黔南布依族苗族自治州,52
5301,昆明市,53
5303,曲靖市,53
5304,玉溪市,53
5305,保山市,53
5306,昭通市,53
5307,丽江市,53
5308,普洱市,53
5309,临沧市,53
5323,楚雄彝族自治州,53
5325,红河哈尼族彝族自治州,53
5326,文山壮族苗族自治州,53
5328,西双版纳傣族自治州,53
5329,大理白族自治州,53
5331,德宏傣族景颇族自治州,53
5333,怒江傈僳族自治州,53
5334,迪庆藏族自治州,53
5401,拉萨市,54
5421,昌都地区,54
5422,山南地区,54
5423,日喀则地区,54
5424,那曲地区,54
5425,阿里地区,54
5426,林芝地区,54
6101,西安市,61
6102,铜川市,61
6103,宝鸡市,61
6104,咸阳市,61
6105,渭南市,61
6106,延安市,61
6107,汉中市,61
6108,榆林市,61
6109,安康市,61
6201,兰州市,62
6202,嘉峪关市,62
6203,金昌市,62
6204,白银市,62
6205,天水市,62
6206,武威市,62
6207,张掖市,62
6208,平凉市,62
6209,酒泉市,62
6211,定西市,62
6212,陇南市,62
6229,临夏回族自治州,62
6301,西宁市,63
6321,海东地区,63
6322,海北藏族自治州,63
6323,黄南藏族自治州,63
6325,海南藏族自治州,63
6326,果洛藏族自治州,63
6327,玉树藏族自治州,63
6328,海西蒙古族藏族自治州,63
6401,银川市,64
6402,石嘴山市,64
6403,吴忠市,64
6404,固原市,64
6405,中卫市,64
6501,乌鲁木齐市,65
6502,克拉玛依市,65
6521,吐鲁番地区,65
6522,哈密地区,65
6523,昌吉回族自治州,65
6527,博尔塔拉蒙古自治州,65
6528,巴音郭楞蒙古自治州,65
6529,阿克苏地区,65
6531,喀什地区,65
6532,和田地区,65
6542,塔城地区,65
6543,阿勒泰地区,65
相关标签: 字符集 数据