寫在前面
有很久都沒(méi)更新博客了,主要是因?yàn)樽罱丶伊擞悬c(diǎn)懶(不為自己找借口)。今天被姐姐拉去當(dāng)做苦力做事,需要做的事有點(diǎn)小麻煩,處理一張很大的表,將表中的數(shù)據(jù)按照分類單獨(dú)導(dǎo)出為一個(gè)表。我嫌棄復(fù)制太麻煩了就覺(jué)得用數(shù)據(jù)庫(kù)可以實(shí)現(xiàn),這里說(shuō)的是將Excel導(dǎo)入MySQL,當(dāng)然也有導(dǎo)出。
說(shuō)一下前置條件
時(shí)間:2019年7月12日00:10:06
數(shù)據(jù)庫(kù)版本:5.7.25-0ubuntu0.18.04.2
- 解釋說(shuō)明一下:我是在Windows下安裝了Linux子系統(tǒng),然后在Ubuntu中安裝的數(shù)據(jù)庫(kù)。其實(shí)這個(gè)不影響,只要你安裝了工具,能夠連接到數(shù)據(jù)庫(kù)我想裝在哪里都無(wú)所謂。
輔助工具:Navicat for MySQL
- 解釋說(shuō)明:Navicat簡(jiǎn)直是神器,懂的當(dāng)然懂。然后其實(shí)導(dǎo)出有命令,導(dǎo)入我沒(méi)有嘗試過(guò),后面試過(guò)了再說(shuō)。
開(kāi)始操作
先連接上數(shù)據(jù)庫(kù),然后呢點(diǎn)擊導(dǎo)入向?qū)?/code>,可以看到很多的選項(xiàng),我們選擇Excel然后點(diǎn)擊下一步。



然后就是下一步下一步下一步,可以看到一個(gè)這個(gè)圖點(diǎn)擊開(kāi)始就好:

等待一下,就OK了。我沒(méi)遇到過(guò)錯(cuò)誤(就是這么理直氣壯),看一下結(jié)果的樣子


中間來(lái)點(diǎn)小甜點(diǎn)
在幫我姐做事的時(shí)候需要我把一些數(shù)據(jù)單獨(dú)生成一張表,這里就順便提一下如何使用SQL命令將查詢出來(lái)的結(jié)果創(chuàng)建一張新的表,我就用我這個(gè)了:
CREATE TABLE 隊(duì)員(SELECT * FROM Sheet1 WHERE 角色="組員" );
解釋:
- 其實(shí)就是將查詢的結(jié)果創(chuàng)建新的表,然后呢這里面有中文,你最好保證你的數(shù)據(jù)庫(kù)編碼風(fēng)格是支持中文的,然后最好是別用中文。我這里只是示范一下如果確實(shí)要用中文怎么辦,表名中文是不用加引號(hào)的,后面的值當(dāng)然是要加的。
這樣創(chuàng)建的表格式和原來(lái)的表結(jié)構(gòu)一樣,表頭什么都是一樣的。

現(xiàn)在來(lái)導(dǎo)出
用工具導(dǎo)出來(lái)
所有的操作都搞完了,你想要的數(shù)據(jù)單獨(dú)是一張表了,我們被要求給別人看到是Excel而不是數(shù)據(jù)庫(kù)。那我們就將它導(dǎo)出來(lái)吧。看到前面那個(gè)導(dǎo)入向?qū)?/code>旁邊的導(dǎo)出向?qū)?/code>了嗎?我們需要的就是那個(gè),點(diǎn)擊,選擇Excel,然后選擇你需要導(dǎo)出的表和選擇保存路徑然后下一步、再下一步。這個(gè)時(shí)候如果你是需要表頭的那么你需要勾選上包含列的標(biāo)題然后下一步后點(diǎn)擊開(kāi)始(太多圖重復(fù),就不放圖了,多了看起來(lái)不舒服)。等待一下,就完成了。還是那句話我沒(méi)遇到過(guò)錯(cuò)誤(就是這么理直氣壯)。
命令行來(lái)一個(gè)
MySQL中導(dǎo)出數(shù)據(jù)是有命令的,我也試過(guò)了。然后如果你沒(méi)有工具又想導(dǎo)出,那就使用命令行吧。有人這樣說(shuō)過(guò):
命令行是程序員的浪漫 ——我說(shuō)的
簡(jiǎn)單介紹一下命令
select * from tablename into outfile "filepath and file extension"
into和outfile是關(guān)鍵詞,然后雙引號(hào)里面是文件路徑和文件名(包括后綴)。然后你開(kāi)始執(zhí)行,會(huì)發(fā)現(xiàn)不得行,報(bào)錯(cuò)了:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
這是為啥呢?是因?yàn)镸ySQL導(dǎo)出文件有限制,除了保存到它規(guī)定的文件夾路徑下以外都是不被允許的。我們當(dāng)然不喜歡這個(gè)規(guī)定,于是我們打算修改它。找到你的mysql的配置文件,叫做my.cnf的,在其中加上這樣一句話:
secure_file_priv=''
然后重啟你的MySQL,就可以使用上面的命令將你想要導(dǎo)出的表保存到你想要的位置了。
這樣保存出來(lái)的表有一個(gè)問(wèn)題,那就是沒(méi)有表頭,這是為什么我還沒(méi)搞懂,后面有時(shí)間研究。
寫在后面
我寫這個(gè)的時(shí)候在凌晨,如果有錯(cuò)誤的地方歡迎你的指出。