1. 程式人生 > >把Excel檔案匯入到Navicat for MySQL時的問題

把Excel檔案匯入到Navicat for MySQL時的問題

首先,是字符集的問題。這種問題很常見,在新建立的表的時候在表中插入資料,但是插入漢字的時候卻總會出亂碼。

解決問題方法如下:mysql> show variables like ‘characterset%’;
+————————–+—————————-+
| 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)
這個相信大家在網上都會找到,所以這裡就不細說了。
接下來我要說的這兩個小問題使網上十分鐘少見的,希望可以幫助到大家。
首先是建表示的問題。我們都知道建表的時候會注意欄位,但是隻是這樣是不夠的,應該還要注意一個地方,那就是這裡:

這裡寫圖片描述

當我們的欄位型別為“varchar”的時候就一定要注意下面的預設選項的這些值。基本上按照圖片上面來填的話不會出什麼大問題。
要不然匯入資料之後,雖然會出現正常的行數,但是我們所有欄位下面的內容全都是空的。
但是正常插入的話是好用的,比如第一行就是我insert into的。
就像這樣:
這裡寫圖片描述

這是第一點我們需要注意的地方O(∩_∩)O。
第二個就是匯入表的時候,當我們把Excel檔案匯入到MySQL中的時候,這個才是我要講的重點。
在網上,我們可以找到怎樣將Excel檔案匯入到MySQL中去。但是大部分的部落格都忽略了一個問題,那就是儲存檔案時候的格式。
這裡我要重點強調“格式”這件事情,因為在下就是因為這個格式這件事情而被坑到了骨頭裡。
當我們編輯好檔案後會選擇儲存,我想大部分人都會選擇直接儲存。
好吧,只有我是。
大家一定要注意了,這個儲存可不是直接儲存,而是要選擇格式的,如果想要修改檔案的格式一定不能只修改檔案後面的拓展名。
下面我來給大家來幾張圖片:

這裡寫圖片描述

如果不這樣做的話,會傳進去空值、null、0什麼的,總之就是沒有值。
比如:
這裡寫圖片描述

這裡面的0 ,並不是我在檔案中寫入的數字:
這裡寫圖片描述

這是我在表中所新增的內容。
基本上這樣操作之後再從網上覆制貼上SQL就可以了:
LOAD DATA LOCAL INFILE ‘D:/java/444.csv’ INTO TABLE haha FIELDS TERMINATED BY ‘,’LINES TERMINATED BY ‘\n’;
D:/java/444.csv:本地檔案路徑!!!!
到這裡匯入檔案的時候卻依然不好使,檔案是倒進去了,但是卻會出現亂碼。

這裡寫圖片描述

這裡給大家推薦一款軟體叫做“UE”,這個工具基本上是我們辦公屋子裡面必備的一款軟體,當然其他的軟體也可以,比如Notepad++,一個非常可愛的變色龍。
出向上面這種情況是因為檔案的編碼格式不對,並不是utf-8,所以我們要用各種文字編輯器之類的軟體來用它轉轉換格式。
這裡小生就用“UE”這個軟體來句一個例子:
首先,我們右鍵Excel檔案,然後用“UE”開啟,之後—->>高階—->>轉換—>>轉成utf-8,之後我們再次倒入檔案就可以了。
既不會出現亂碼,也不會出現傳空值這種情況出現。