我正在使用PuTTY运行:

mysql> SELECT * FROM sometable;

Sometable有许多字段,这导致许多列试图显示在终端中。字段换行到下一行,因此很难将列标题与字段值对齐。

在终端中查看这些数据有什么解决方案?

我没有也不想访问phpMyAdmin -或任何其他GUI界面。我正在寻找这样的命令行解决方案:将MySQL查询结果保存为文本或CVS文件


当前回答

您可以使用——table或-t选项,这将输出一组漂亮的结果

echo 'desc table_name' | mysql -uroot database -t

或者其他一些方法来传递查询到mysql,比如:

mysql -uroot table_name --table < /tmp/somequery.sql

输出:

+--------------+--------------+------+-----+---------+----------------+
| 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    |                |
+--------------+--------------+------+-----+---------+----------------+

其他回答

只是为了补充我认为最好的答案,我也用了更少的-SFX,但以不同的方式:我喜欢把它广告到我的。my.cnf文件在我的主文件夹,一个例子cnf文件看起来像这样:

[client]
user=root
password=MyPwD
[mysql]
pager='less -SFX'

这样做的好处是,只有当查询的输出实际上超过一页长时才使用less,这里是所有标志的解释:

-S:单行,当一行比屏幕宽时不要跳过一行,而是允许向右滚动。 -F:如果一个屏幕退出,如果内容不需要滚动,然后发送到标准输出。 -X:没有init,禁用“less”可能配置为每次加载时输出的输出。

注意:在.my.cnf文件中,不要把pager命令放在[client]关键字下面;虽然它可能与mysql工作得很好,mysqldump将抱怨不能识别它。

使用Windows命令提示符,您可以根据需要增加窗口的缓冲区大小来查看列的数量。这取决于表中列的数目。

我相信putty具有您可以为窗口指定的最大列数。

对于Windows,我个人使用Windows PowerShell,并将屏幕缓冲宽度设置得相当高。列宽度保持固定,您可以使用水平滚动条查看数据。我也有过和你现在一样的问题。

编辑:对于远程主机,你必须SSH进入,你会使用一些像plink + Windows PowerShell

使用mysql的ego命令

mysql的帮助命令:

自我(\G)发送命令到mysql服务器,结果垂直显示。

所以通过添加\G到你的选择,你可以得到一个非常干净的垂直输出:

mysql> SELECT * FROM sometable \G

使用寻呼机

你可以用-S选项让MySQL使用更少的分页器,它可以剪切宽的行,并给你一个可以用方向键滚动的输出:

mysql> pager less -S

因此,下次你运行一个输出宽的命令时,MySQL会让你用更少的分页器浏览输出:

mysql> SELECT * FROM sometable;

如果你用完了寻呼机,想回到标准输出的常规输出,使用这个:

mysql> nopager

尝试启用垂直模式,使用\G来执行查询,而不是;:

mysql> SELECT * FROM sometable \G

结果将以垂直模式列出,因此每个列的值将打印在单独的行上。输出将更窄,但显然更长。