Windows中cmd登錄mysql導入sql文件出現中文亂碼。
日常工作中我們會通過cmd登錄mysql,然後執行sql文件,但發現如果插入語句中的值有中文,就會亂碼。這個事很頭疼。
現在給大家演示一下,並給出解決方法。
一、演示亂碼
1、首先找一個可以登錄的mysql, 我這裏是我本地安裝的。準備一個sql文件stu.sql,裏面寫上插入語句。
insert into `t_user` (`oid`, `username`, `password`, `realname`, `userstatus`, `usertype`, `systemid`, `createon`) values('111','111','5ecaced2eef10347cbaf15383799242b','測試','1','1','0','2015-06-03 10:18:31');
insert into `t_user` (`oid`, `username`, `password`, `realname`, `userstatus`, `usertype`, `systemid`, `createon`) values('222','222','e10adc3949ba59abbe56e057f20f883e','張三','0','0','32833','2015-06-04 15:16:03');
insert into `t_user` (`oid`, `username`, `password`, `realname`, `userstatus`, `usertype`, `systemid`, `createon`) values('333','333','e10adc3949ba59abbe56e057f20f883e','李四','1','0','32833','2015-06-23 15:08:11');
insert into `t_user` (`oid`, `username`, `password`, `realname`, `userstatus`, `usertype`, `systemid`, `createon`) values('444','444','e10adc3949ba59abbe56e057f20f883e','王五','1','1','163844','2015-06-23 18:13:38');
至於表t_user,你們可以自己弄一個。
2、打開cmd,登錄MySQL,命令爲:mysql -h 127.0.0.1 -P 3306 -u hive -p
3、查看數據庫,並選擇登錄用戶hive所在的數據庫
4、執行我們剛纔準備的sql文件。
source C:\Users\zhanglw\Desktop\stu.sql,寫好文件的全路徑,可以直接拖進cmd中
5、利用其它客戶端查看我們插入的數據,發現出現亂碼了
把插入的數據清理掉吧,亂碼了,不能用了。
二、解決方法
1、確定數據庫編碼,show variables like 'character_set_database';
一般都是utf8格式的
2、退出重新登錄,帶上編碼參數
mysql -h 127.0.0.1 -P 3306 -u hive -p --default-character-set=utf8
3、選擇數據庫,重新執行一下sql文件
4、再利用客戶端查詢
補充:
有人在cmd中直接查看,發現還是亂碼
是不是感覺很鬱悶???其實這裏出現亂碼是跟windows系統有關係。
1、查看windows編碼,採用chcp命令
我的活動代碼頁爲:936,它對應的編碼格式爲GBK。(另外說明:65001 爲utf-8代碼頁)
2、那麼就以gbk編碼方式登錄mysql
mysql -h 127.0.0.1 -P 3306 -u hive -p --default-character-set=gbk
查詢結果正常了。