首頁  >  文章  >  php教程  >  MySQL命令列格式化輸出

MySQL命令列格式化輸出

高洛峰
高洛峰原創
2016-12-14 10:59:431447瀏覽

MySQL的客戶端命令列工具,有許多方便使用者的特性,某些方面甚至可以說比Oracle的sqlplus更人性化。當然從整體來說,還是sqlplus比較方便些,這麼說或許是我對sqlplus更熟悉吧。這裡記錄下MySQL命令列幾個比較常用的特性。

1.使用G按行垂直顯示結果

如果一行很長,需要這行顯示的話,看起結果來就非常的難受。在SQL語句或指令後面使用G而不是分號結尾,可以將每一行的值垂直輸出。這個可能也是大家對於MySQL最熟悉的差別於其他資料庫工具的一個特性了。

mysql> select * from db_archivelog\G
*************************** 1. row ***************************
id: 1
check_day: 2008-06-26
db_name: TBDB1
arc_size: 137
arc_num: 166
per_second: 1.6
avg_time: 8.7

2.使用pager設定顯示方式

如果select出來的結果集超過幾個螢幕,那麼前面的結果一晃而過無法看到。使用pager可以設定呼叫os的more或less等顯示查詢結果,和在os中使用more或less查看大檔案的效果一樣。

使用more

mysql> pager more
PAGER set to ‘more’
mysql> P more
PAGER set to ‘more’

使用less

mysql> pager less
PAGER set to ‘less’
mysql> P less
PAGER set to ‘less’

還原成stdout

mysql> nopager
PAGER set to stdout

3.使用tee保存運行結果到文件

這個類似於sqlplus的spool功能,可以將命令列中的結果保存到外部文件中的結果保存到外部文件中。如果指定已經存在的文件,則結果會附加到文件中。

mysql> tee output.txt
Logging to file ‘output.txt’

mysql> T output.txt
Logging to file ‘output.txt’
mysql> notee
Outfile disabled.

mysql> t
Outfile disabled

4.執行OS命令

mysql> system uname
Linux
mysql> ! uname
Linux

5.執行SQL檔案

mysql> source test.sql
+—————-+
| current_date() |
+—————-+
| 2008-06-28 |
+—————-+
1 row in set (0.00 sec)

mysql> . test.sql
+—————-+
| current_date() |
+—————-+
| 2008-06-28 |
+—————-+
1 row in set (0.00 sec)

其他指令。
繼續上面的話題,介紹mysql命令列的一些小技巧
1.以html格式輸出結果
使用mysql客戶端的參數–html或-T,則所有SQL的查詢結果會自動產生為html的table碼

$ mysql -uroot –html Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 3286 Server version: 5.1.24-rc-log MySQL Community Server (GPL) Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer. mysql> select * from test.test;
2 rows in set (0.00 sec)

2.以xml格式輸出結果
跟上面差不多,使用–xml或-X選項,可以將結果輸出為xml格式

$ mysql -uroot –xml Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 3287 Server version: 5.1.24-rc-log MySQL Community Server (GPL) Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer. mysql> select * from test.test;
2 rows in set (0.00 sec)

3.修改命令提示字元
使用mysql的–prompt=選項,或進入mysql命令列環境後使用prompt命令,都可以修改提示符

mysql> prompt u@d> PROMPT set to ‘u@d>’ root@(none)>use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed root@mysql>

其中u表示當前連接的用戶,d表示當前連接的數據庫,其他更多的可選項可以參考man mysql

這裡再介紹下通過配置文件來設定MySQL命令列的這些參數。

透過/etc/my.cnf設定檔的[mysql]部分,可以設定MySQL命令列的一些運行參數。例如:

[mysql] prompt=\u@\d \r:\m:\s> pager=’less -S’ tee=’/tmp/mysql.log’

透過prompt設定顯示使用者名,目前資料庫和目前時間,注意在設定檔裡最好使用雙斜線:

root@poster 10:26:35>

透過pager設定使用less來顯示查詢結果,-S表示截斷超過螢幕寬度的行,一行太長MySQL的顯示格式就顯得很亂,如果要看完整的行,建議使用G將行垂直輸出。當然,你也可以加入更多less的參數來控制輸出。

tee則將MySQL執行的所有輸出保存到一個日誌檔案中,即使使用less -S截斷了超長行,在日誌中還是會記錄整個的結果,另外,前面透過prompt設定了當前時間顯示,這樣也便於在日誌檔案中查看每次操作的時間。由於tee的結果是附加到文件中的,因此日誌檔案需要定期清除。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:MySQL 命令列下一篇:MySQL 命令列