最近要開發一個小的答題系統,如果題目人工錄入那確實很麻煩。所以想到是不是可以從用一些現有數據格式的文件導入數據。在網上查了一下,看到有關於將excel的數據導入到mysql的方法。所以將題庫數據整理成excel的。
然后另存為.csv格式的文件。
然后在phpmyadmin中選擇導入操作。
但是由於插入的數據出現亂碼,失敗。
查找原因:因為excel默認編碼格式為ANSI,而mysql數據庫默認的編碼方式是utf-8。
解決辦法:我是用editplus將.csv格式的文件打開(打開時將“編碼”選擇為系統默認即可),然后另存為一份編碼為utf-8的文件。(我是只用了editplus進行的這個操作,如果還有其他可行並且方便的軟件,朋友們也可以留言交流)
然后重新執行導入操作。
所有選項均為默認,導入成功,但是數據表為新建表,並且表明為table 2(該數據庫中之前有一張表),並且表的字段名為col1,col2......並且所有字段的類型均為varchar。
檢查后發現,在導入數據時,選擇完文件后,會有如下提示
勾選上,點擊執行。
這次導入的數據表的字段名就是自己在excel中第一行設置的了。
雖然數據導入到mysql中了,但是和我最初的目的仍有稍許偏差,我是想將excel表中的數據,導入到數據庫中對應表中。
仔細分析后,發現問題可能在於選擇導入時,目錄級別有問題。
前兩次選擇導入操作的時候,都是在database下操作的。
這次在localhost》database》table下選擇導入操作。
一上來就報錯,不過貌似數據插入的位置對了。根據提示,錯誤是主鍵列。我再新建表的時候,主鍵列設為自增。
先將自增屬性去掉試試。
依然報錯。
再將主鍵去掉試試。
數據終於插入進去了,不過excel表中第一行列名也被當做輸入插入到數據庫中了。 而且編號是從0開始的,這可能是剛才報錯的原因。
為了找出真正原因,重新測試。將表刪除重新建立一張空表。
打開之前另存為utf-8編碼的.csv文件,將列名的一行刪除並保存文件。
順利插入,大功告成,吼吼。