mysql select 格式化輸出


select * from test\G;

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的結果是附加到文件中的,日志文件需要定期清除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM