【问题标题】:MySQL command output too wide in command-line client [duplicate]命令行客户端中的MySQL命令输出太宽[重复]
【发布时间】:2018-06-24 16:11:33
【问题描述】:

我在 Ubuntu 的终端模拟器 lxterminal 中使用 mysql 命令行客户端。当我运行以下命令时:

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

输出一团糟:

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

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)

我想知道是否可以将终端仿真器中的输出视为像这样的漂亮表格?

【问题讨论】:

  • 可能的解决方法here

标签: mysql sql ubuntu terminal-emulator


【解决方案1】:

如果你在 Ubuntu 上运行,你可以使用 bash shell,它看起来不错,不会像这样乱七八糟。

【讨论】:

  • 我已经在bashlxterminal 中运行mysql
【解决方案2】:

使用mysqlego 命令

来自mysqlhelp 命令:

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

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

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

使用寻呼机

您可以告诉 MySQL 使用带有 -S 选项的 less 寻呼机,该选项可以切断宽行并为您提供可以使用箭头键滚动的输出:

mysql> pager less -S

因此,下次您运行具有宽输出的命令时,MySQL 将允许您使用 less 寻呼机浏览输出:

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

如果您完成了寻呼机并想返回到stdout 上的常规输出,请使用以下命令:

mysql> nopager

【讨论】:

  • 谢谢。 \G 将解决查询结果中只有一条记录时的问题。如果查询结果中有多条记录,你还会用\G吗?
  • 当然! \G 使用标题来分隔每条记录。在第一行和第二行之间,您将有一条类似这样的行来警告您这是第二行,如下所示:*************************** 2. row ***************************
【解决方案3】:

您也可以尝试调整终端的字体大小,但如果没有,则垂直显示输出应该是清晰的。 使用 /G 选项运行查询,即

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

【讨论】:

  • 是反斜杠而不是斜杠
猜你喜欢
  • 2011-09-19
  • 2010-10-30
  • 2021-08-08
  • 1970-01-01
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 2012-10-29
相关资源
最近更新 更多