圖像化導向的MySQL管理工具比比皆是,但真正能夠提速而且並非“圖有其表”的管理工具,可能沒有哪一個比得上MySQL客戶端驅動的命令行更有效了。不過,執行一般查詢需要大量鍵盤輸入工作,而且確定您目前正在登錄的數據庫以及快速監測數據庫服務器的性能都會變得很單調乏味。
改變客戶端提示符
如果每運行一次show tables來提醒自己目前所選擇的是哪個數據庫就能得到一塊錢的話,估計現在我都成百萬富翁了。事實上,當我們不停的定期在IDE、shell提示符和MySQL客戶端提示符之間切換的時候,很容易就會迷失方向,不知道自己在哪裡了。要從根本上消除這個問題,可以使用以下prompt命令來更改MySQL的提示符:
mysql>prompt MySQL (d)>
執行完該命令後,目前所選擇的數據庫就會在提示符中顯示出來,如下:
MySQL (corporate)>
此外,我們也很容易跟丟我們所登錄的數據庫服務器,更不用說正在使用的帳戶了。要解決這個問題,通過使用u 和h 選項來更改提示符設置:
mysql>prompt MySQL (u@h)>
執行命令的結果如下:
MySQL ([email protected])>
想要永久的保存這種更改設置,可以將以下的命令添加到.my.cnf 文件中:
[mysql] prompt=MySQL d>
數據庫、用戶和主機選項只是很多可選選項的一個很小的部分而已,您可以參閱MySQL的說明文檔以獲取更多信息。
使用shell Alias(別名)來執行經常使用的MySQL命令
假設您的新web應用正逐步步入應用階段,每個小時都有新用戶注冊。就像新股上市一樣,您和您的同事需要經常關注注冊用戶的數量。但是,就為了執行一個簡單的計數查詢就需要不斷的登錄退出MySQL,顯然不是很劃算。如果您登錄到服務器,您可以創建一個shell別名來實現登錄到MySQL服務器、選擇適當的數據庫和執行計數命令整個過程:
%>alias usrcount="MySQL -u appadmin -p myapplication
-e "select count(id) from users""
在本例中,您想要使用appadmin用戶帳戶登錄到本地MySQL服務器,選擇myapplication數據庫,然後利用SELECT查詢來執行計數查詢。而執行以上命令後,當您想要確定系統中有多少用戶時,只需要執行以下的命令,並輸入appadmin的用戶密碼就可以了:
%>usrcount
EnterpassWord:
+-------------+
|count(id)|
+-------------+
|348|
+-------------+
想要永久的保存這個別名,可以將其添加保存到.bashrc文件或類似的shell配置文件中。
以垂直格式表現查詢結果
當表包含了很多列時,要在一個shell窗口中顯示SELECT查詢的結果就相當困難了。通過在查詢中附加一個G轉換就可以很容易解決這一不便之處:
MySQL>SELECT * from users WHERE id=1G
執行這一查詢會使輸出結果表現如下:
MySQL test>select * from users where id=1G
*************************** 1. row *********
id: 1
name: Nancy
email: [email protected]
telephone: 861088888888
city: Beijing
1 row in set (0.00 sec)
從查詢結果創建一個CSV文件
如果您能夠很專業地使用數據庫,那麼很可能會有同事讓您將數據從數據庫中轉存到一個Excel文件,以便進行進一步的分析。我們可以通過修改一個SELECT查詢來執行所有的CSV格式化步驟,然後將數據放置到文本文件中。您需要做的只是要指出結束的字段和界限。例如,使用下面的命令可以將一個名為users的表轉存到名為users.csv的CSV文件中:
MySQL>SELECT*FROMusersINTOOUTFILE'/home/jason/users.csv'
FIELDSTERMINATEDBY' '->LINESTERMINATEDBY' ';
插入批量數據
假設您在編寫一個用來銷售各種各樣產品的電子商務應用程序。比較明智的做法是先對這些產品進行分類,因此,您可能需要使用一個表(本例中命名為categorIEs)來管理這些分類名稱:
MySQLtest>createtablecategorIEs(
->idintegernotnullauto_increment,
->namevarchar(35)notnull,
->primarykey(id));
當您在編寫程序的過程中,您已經添加了一個包含分類列表的文本文件(categorIEs.txt)。這個文件類似以下形式:
糖果
水果
咖啡
茶
蔬菜
接下來就要將這些分類添加到categorIEs 表中。您可以手動添加,但是這很耗費時間而且容易出錯,比較明智的做法是使用MySQL的LOAD DATA INFILE命令:
MySQL>LOADDATAINFILE'/home/nancy/categorIEs.txt'
INTOTABLEcategorIEs->LINESTERMINATEDBY'
'
如果您的輸入文件的每一行都包含了多個項目,那您可以通過使用制表符來分隔這些項目並把每個項目插入到一個獨立的列中,使用FIELDS TERMINATED BY ' ':
MySQL>LOADDATAINFILE'/home/jason/categorIEs.txt'
INTOTABLEcategories->FIELDSTERMINATEDBY' '
LINESTERMINATEDBY'
'
禁用煩人的錯誤提示音
您可能很討厭MySQL客戶端發出的錯誤提示音。如果您實在無法適應這種哔哔聲,您可以從客戶端內部執行一個查詢來斷絕這些午夜驚鈴。雖然這樣做對於效率並沒有什麼關系,但您還是可以把這個功能禁用掉。暫時禁用提示聲,可以在登錄到服務器的同時調用 --no-beep。
%>MySQL -u root -p --no-beep
要想永久禁用這個功能,則將no-beep添加到.my.cnf 文件的[clIEnt]部分。
總之,希望本文所匯編的MySQL客戶端技巧能夠幫助您更有效的利用這個強大的工具。