MySQL命令行客户端中输出过宽

7
我在Ubuntu中使用终端模拟器lxterminal,并使用mysql命令行客户端。当我运行以下命令:
mysql> select * from routines where routine_name = "simpleproc";

输出是一团糟:

My current output

但如果我在这里复制粘贴,输出会显示一个漂亮的表格:

mysql> select * from routines where routine_name = "simpleproc";

+---------------+-----------------+----------------+--------------+--------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+----------------+----------------+--------------+--------------------------------------------------------+---------------+-------------------+-----------------+------------------+-----------------+----------+---------------+---------------------+---------------------+-------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------------+----------------------+--------------------+
| SPECIFIC_NAME | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | DATA_TYPE | CHARACTER_MAXIMUM_LENGTH | CHARACTER_OCTET_LENGTH | NUMERIC_PRECISION | NUMERIC_SCALE | DATETIME_PRECISION | CHARACTER_SET_NAME | COLLATION_NAME | DTD_IDENTIFIER | ROUTINE_BODY | ROUTINE_DEFINITION                                     | EXTERNAL_NAME | EXTERNAL_LANGUAGE | PARAMETER_STYLE | IS_DETERMINISTIC | SQL_DATA_ACCESS | SQL_PATH | SECURITY_TYPE | CREATED             | LAST_ALTERED        | SQL_MODE                                                                                                                                  | ROUTINE_COMMENT | DEFINER        | CHARACTER_SET_CLIENT | COLLATION_CONNECTION | DATABASE_COLLATION |
+---------------+-----------------+----------------+--------------+--------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+----------------+----------------+--------------+--------------------------------------------------------+---------------+-------------------+-----------------+------------------+-----------------+----------+---------------+---------------------+---------------------+-------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------------+----------------------+--------------------+
| simpleproc    | def             | test           | simpleproc   | PROCEDURE    |           |                     NULL |                   NULL |              NULL |          NULL |               NULL | NULL               | NULL           | NULL           | SQL          | BEGIN


SELECT COUNT(*) INTO param1 FROM CUSTOMERS1;

END | NULL          | NULL              | SQL             | NO               | CONTAINS SQL    | NULL     | DEFINER       | 2018-01-12 15:18:20 | 2018-01-12 15:18:20 | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |                 | root@localhost | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+---------------+-----------------+----------------+--------------+--------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+----------------+----------------+--------------+--------------------------------------------------------+---------------+-------------------+-----------------+------------------+-----------------+----------+---------------+---------------------+---------------------+-------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------------+----------------------+--------------------+
1 row in set (0.01 sec)

我想知道是否有可能在终端仿真器中查看输出,像这个漂亮的表格一样?

1
可以在这里找到可能的解决方案:[https://www.amazon.com/dp/B01BMES072/]. - Michael - sqlbot
3个回答

11

使用mysqlego命令

mysqlhelp命令中可知:

ego          (\G) 发送命令到mysql服务器,以垂直方式显示结果。

因此,通过在你的select后附加\G,你可以获得非常干净的垂直输出:

mysql> select * from routines where routine_name = "simpleproc" \G

使用分页器

你可以通过使用-S选项告诉MySQL使用less分页器,它会自动将过宽的行裁剪,并提供可以通过箭头键滚动的输出:

mysql> pager less -S

因此,下次您运行带有广泛输出的命令时,MySQL将允许您使用less分页器浏览输出:

mysql> select * from routines where routine_name = "simpleproc";

如果您完成了分页功能,并想返回到stdout的常规输出,请使用以下命令:

如果您完成了分页功能,并想返回到`stdout`的常规输出,请使用以下命令:
mysql> nopager

谢谢。当查询结果只有一条记录时,\G可以解决问题。如果查询结果中有多条记录,您还会使用\G吗? - Tim
当然!\G使用一个头来分隔每个记录。在第一行和第二行之间,你会看到这样一行警告,告诉你下面显示的是第二行:*************************** 2. row *************************** - Ronan Boiteau

1
你可以尝试调整终端的字体大小,但如果所有内容都不清晰,垂直显示输出应该是清晰的。使用/G选项运行查询,例如:
mysql> select * from routines where routine_name = "simpleproc" \G

1
这是反斜杠,不是正斜杠。 - Sajjad

-2
如果你正在使用Ubuntu操作系统,你可以使用bash shell,它看起来很漂亮,不会像这样混乱。

我已经在lxterminalbash中运行了 mysql - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接