设置分页器分页不自动换行浏览 MySQL 查询结果

陪她去流浪 桃子 2020年03月15日 阅读次数:1829

在 MySQL 命令行里面执行命令时常常会有大量结果展示,有些结果会自动换行(折行)展示,显示效果很差。可以通过改变默认的 PAGER(分页器) 来分页、分屏展示。

查看 MySQL 的帮助得知可以通过 pager\P 命令来改变当前的分页器,通过 nopager\n 来关闭分页器:

mysql> ?

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
...
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
nopager   (\n) Disable pager, print to stdout.
...

For server side help, type 'help contents'

目前常用的是 less 分页器,git 等常用软件都用了这个。这里也能用。

mysql> \P less
PAGER set to 'less'

以上即可实现简单的分页浏览功能。

但是只是实现了分页浏览功能,还是自动换行了,很难看。 比如下面这样,基本没法看:

+-------+------------------------------------------+--------------------------------
------------------------------------------------------------------------------------
----------------------------+-------------------------------------------------------
-----------------------------------------------------+----------+
| id    | hash                                     | chinese                        
                                                                                    
                            | english                                               
                                                     | japanese |
+-------+------------------------------------------+--------------------------------
------------------------------------------------------------------------------------
----------------------------+-------------------------------------------------------
-----------------------------------------------------+----------+
|     1 | 8ec07a2841d3fb671afd11013643063bda9fa7f3 | 三国志-赤壁之战                  
                                                                                    
                          | Chik Bik Ji Jin - Saam Gwok Ji (CN-20) (Tw) [!]         
                                                   |          |
|     2 | 4e2a008c5aa89ab92ba91e4d2b3e0bbb07feffe0 | 三国志-英杰传                    
                                                                                    
                          | San Guo Zhi - Ying Jie Zhan (Ch)                        
                                                   |          |
|     3 | 3f6b37168318a1e56f447a99d7f516415896233a | 热血行进曲                      
                                                                                   
                            | Downtown - Nekketsu Koushin Kyoku - Soreyuke Daiundouk
ai (J)                                               |          |
|     4 | ec0e39e8be26e6e0c3cea0a56e53807273b96981 | 热血新记录(换必杀)             
:

看来还需要一番参数调优。深度探索一番后,我找到以下两种:

  1. \P less -S~
  2. \P less -XSRF~

参数说明:

  • X 不使用第二屏显示内容
  • S 不自动换行,可按左、右方向键滚动屏幕
  • R 输出原始终端控制字符(比如颜色控制)
  • F 如果一屏能显示完,那么显示后退出
  • ~ 不在末尾显示类似vim的波浪符号

两种都比较推荐,两种都可以尝试然后选择自己喜欢的。

注:XSRF 发音有点类似前端的 CSRF(Cross Site Request Forgery,跨域请求伪造),所有蛮好记。

上面的配置只是当前连接生效,可以修改 MySQL 的配置文件 my.cnf 以在当前客户端永久生效(非服务端配置):

[client]
pager = less -XSRF~

这篇文章的内容已被作者标记为“过时”/“需要更新”/“不具参考意义”。

标签:MySQL