mysql select 格式化輸出

select * from test\G;html

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)

其餘還有一些功能,能夠經過help或者?得到MySQL命令行支持的一些命令。
繼續上面的的話題,介紹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的結果是附加到文件中的,日誌文件須要按期清除。
相關文章
相關標籤/搜索