How to best display in Terminal a MySQL SELECT returning too many fields?
我正在使用PuTTY运行:
在终端中查看此类数据有哪些解决方案?
我既没有也不想访问phpMyAdmin-或任何其他GUI界面。 我正在寻找这样的命令行解决方案:将MySQL查询结果保存到文本或CVS文件中
用
此查询垂直显示行,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | *************************** 1. row *************************** Host: localhost Db: mydatabase1 User: myuser1 Select_priv: Y Insert_priv: Y Update_priv: Y ... *************************** 2. row *************************** Host: localhost Db: mydatabase2 User: myuser2 Select_priv: Y Insert_priv: Y Update_priv: Y ... |
您可能还会发现此功能有用(仅非Windows):
这将通过
按下
尝试启用垂直模式,使用
您的结果将以垂直模式列出,因此每个列值将打印在单独的行上。输出将更窄,但显然更长。
您可以使用
1 |
或其他将查询传递给mysql的方法,例如:
1 |
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | +--------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(30) | NO | UNI | NULL | | | first_name | varchar(30) | NO | | NULL | | | last_name | varchar(30) | NO | | NULL | | | email | varchar(75) | NO | | NULL | | | password | varchar(128) | NO | | NULL | | | is_staff | tinyint(1) | NO | | NULL | | | is_active | tinyint(1) | NO | | NULL | | | is_superuser | tinyint(1) | NO | | NULL | | | last_login | datetime | NO | | NULL | | | date_joined | datetime | NO | | NULL | | +--------------+--------------+------+-----+---------+----------------+ |
使用
通过
ego(\G) Send command to mysql server, display result vertically.
因此,通过在
使用寻呼机
您可以告诉MySQL使用
1 | mysql> pager less -S |
因此,下次您运行带有宽输出的命令时,MySQL将允许您使用
如果您已经完成了寻呼机,并想返回到
1 | mysql> nopager |
默认的寻呼机是stdout。 stdout具有列限制,因此将包装输出。您可以将其他工具设置为寻呼机以格式化输出。有两种方法。一种是限制列,另一种是在vim中对其进行处理。
第一种方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ? ~ echo $COLUMNS 179 mysql> nopager PAGER set to stdout mysql> pager cut -c -179 PAGER set to 'cut -c -179' mysql> select * from db; +-----------+------------+------------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+- | Host | Db | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv | +-----------+------------+------------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+- | % | test | | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | | % | test\_% | | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | | localhost | phpmyadmin | phpmyadmin | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | | localhost | it | it | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | +-----------+------------+------------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+- 4 rows in set (0.00 sec) mysql> |
输出不完整。内容适合您的屏幕。
第二个:
设置vim模式以现在在.vimrc中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | ? ~ tail ~/.vimrc " no-wrap for myslq cli set nowrap mysql> pager vim - PAGER set to 'vim -' mysql> select * from db; Vim: Reading from stdin... +-----------+------------+------------+-------------+-------------+---------- | Host | Db | User | Select_priv | Insert_priv | Update_pr +-----------+------------+------------+-------------+-------------+---------- | % | test | | Y | Y | Y | % | test\_% | | Y | Y | Y | localhost | phpmyadmin | phpmyadmin | Y | Y | Y | localhost | it | it | Y | Y | Y +-----------+------------+------------+-------------+-------------+---------- ~ ~ ~ |
只是为了补充我认为最好的答案,我还使用了
这样做的好处是,仅当查询的输出实际上超过一页时才使用
- -S:单行,当行比屏幕宽时不要跳过行,而是允许向右滚动。
- -F:退出一个屏幕,如果内容不需要滚动,则仅发送到stdout。
- -X:无init,禁用每次配置为输出的" less"输出。
注意:在
如果以交互方式使用MySQL,则可以将寻呼机设置为使用
1 2 3 4 5 6 7 8 9 10 11 12 |
如果您不使用
1 | "blah":"blah","blah":"blah","blah":"blah" |
我写了
此分页器专为表格数据而设计-并且还支持MySQL。
1 2 3 4 |
使用Windows命令提示符,可以增加窗口的缓冲区大小,以使您可以看到列数。这取决于表中的列数。
您可以使用
1 | tee somepath\filename.txt |
我相信腻子具有可以为窗口指定的最大列数。
对于Windows,我个人使用Windows PowerShell,并将屏幕缓冲区宽度设置得较高。列宽保持固定,您可以使用水平滚动条查看数据。我遇到了同样的问题。
编辑:对于必须通过SSH进入的远程主机,将使用plink + Windows PowerShell之类的东西