Mysql 匯入excel檔案 中文亂碼
阿新 • • 發佈:2019-01-08
Mysql配置好之後,需要資料來進行學習,插入太慢,正好有現成的excel檔案可以匯入。
使用的資料庫工具是DBeaver,找了半天也沒找到怎麼匯入excel,比oracle的plsql工具差太遠了。
然後把excel另存為csv檔案,編碼是utf8格式的:
-bash-4.1$ file import.csv
import.csv: UTF-8 Unicode text
從Mysql命令列匯入:
mysql> load data local infile '/var/lib/mysql/import.csv' into table yaohq.nanchang_union_butie fields terminated by ',';
Query OK, 0 rows affected, 603 warnings (0.03 sec)
Records: 201 Deleted: 0 Skipped: 201 Warnings: 603
好多警告,查看錶資料發現中文全是亂碼。。。
然後解決亂碼問題:
1. 把表的字符集設定為utf8:
ALTER TABLE yaohq.nanchang_union_butie DEFAULT CHARSET=utf8;
-^……^-
2. 把資料庫的字符集設定為utf8:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default -character-set=utf8
然後重啟資料庫,重新匯入csv檔案,發現還是亂碼。
看了一下亂碼的列屬性,發現編碼還是開始預設的latin1
。
問題可能就在這裡了,由於列比較多,沒有用modify
去修改每個列的字符集,直接刪除表重建,建表的時候在最後加上default charset=utf8
就OK了,然後檢視每個列的字符集,也都變成了utf8
。
繼續匯入csv檔案,沒有報錯:
mysql> load data local infile '/var/lib/mysql/import.csv' into table yaohq.nanchang_union_butie fields terminated by ',';
Query OK, 201 rows affected (0.05 sec)
Records: 201 Deleted: 0 Skipped: 0 Warnings: 0
查詢資料,中文可以正常顯示了。
如果匯入的檔案是gbk格式的,表的編碼應該也是gbk的。
如果表的編碼不可更改,那就修改匯入檔案的編碼吧。