手头有一张含800多条数据的门店销售数据表(含中文字符),想将其导入Mysql数据库进行数据分析。
然而,看似简单的问题,实际操作起来,却出现各种问题,最终花了我近3个小时才算解决,汗!
好记性不如烂笔头,赶快把血泪教训写下来,免得哪一天又重蹈覆辙。
1.检查Mysql安装文件夹根目录下的配置文件(my-default.ini)中是否添加了“default-character-set=utf8”这一项。UTF8兼容世界所有语言。
(2016-06-30补记:这一项似乎不是必需的,即,不添加这一项,配置文件中没有这一项,也可以将中文数据成功导入Mysql;但是,为了避免乱码,最好加上!)
2. 建表时,指定字符集为UTF8。 如,“create table sos_bk (tx_date date, start_time time, order_no varchar(20), terminal_no varchar (10), cashier varchar(30), order_amount decimal, order_time int, food_prepare_time int, total_time int)CHARACTER SET = utf8;”。经过测试,必须在建表时指定字符集。如建表时未指定,则建表后再使用 alter table更改字符集,依然会出现“Incorrect string value ...”错误。此时,必须删除整张表,重新使用指定字符集的语句建表。
3. 接下来,就可以导入.csv文件了,但此时依然不能大意,必须在数据导入语句指定字符集为UTF8。如,"Load Data InFile 'D:\\RawData5.csv' Into Table sos_bkcharacter set utf8fields terminated by ',' lines terminated by '\r\n';",否则,依然会出现如下图所示的乱码。
(2016-06-30补记:这一项似乎也不是必需的,即,未指定字符集,也可以将中文数据成功导入Mysql(.txt文件已另存为UTF-8格式)但是,为了避免乱码,最好加上!)
4.好了,数据入库了,可以享受用数据库来操作数据的乐趣了。Good luck!