【问题标题】:Truncate column names in SELECT (MySQL client)在 SELECT 中截断列名(MySQL 客户端)
【发布时间】:2017-03-23 15:56:44
【问题描述】:

当我查看新数据库以探索其中的内容时,通常我会得到列名长但内容短的表,例如:

mysql> select * from Seat limit 2;

+---------+----------+-------------- -+------------------+-------------+-------------- -+--------------+--------------+--------------+---- ---------+---------+---------+----------+--------- ---+---------------+------------------+------------ +-------------+----------------+-----------------+- --------------------+-------------------+--------- --------+

|座位号 |座位创建 |座位事件ID |座位类别 ID |座位用户 ID |座位订单ID |座位项目 ID |座位行号 |座位区编号 |座位_pmp_id |座位号 |席位 |席位 |座位价格 |座位折扣 |座位折扣ID |座位代码 |座位状态 |座位销售ID | seat_checked_by |座位检查日期 |座位旧订单ID |座位旧状态 |

+---------+----------+-------------- -+------------------+-------------+-------------- -+--------------+--------------+--------------+---- ---------+---------+---------+----------+--------- ---+---------------+------------------+------------ +-------------+----------------+-----------------+- --------------------+-------------------+--------- --------+

| 4897 | 2016-09-01 00:05:54 | 330 | 331 |空 |空 |空 | 0 |空 |空 | 0 |空 |空 |空 | 0.00 |空 |空 |免费|空 |空 | 0000-00-00 00:00:00 |空 |空 | | 4898 | 2016-09-01 00:05:54 | 330 | 331 |空 |空 |空 | 0 |空 |空 | 0 |空 |空 |空 | 0.00 |空 |空 |免费|空 |空 | 0000-00-00 00:00:00 |空 |空|

+---------+----------+-------------- -+------------------+-------------+-------------- -+--------------+--------------+--------------+---- ---------+---------+---------+----------+--------- ---+---------------+------------------+------------ +-------------+----------------+-----------------+- --------------------+-------------------+--------- --------+

由于标题的长度比每行的内容长,我看到了一个难以标准化的未格式化输出,特别是当您搜索诸如未使用的字段之类的小线索时。

有没有办法告诉mysql客户端自动截断列名,例如最多10个字符?前 10 个字符通常足以知道它们指的是哪一列。

当然,我可以使用AS 为其建立列别名,但如果列太多并且您想快速浏览,则每个表都需要很长时间。

例如,其他解决方案是告诉 mysql 删除每一列的前缀 seat_(当然,对于每一列,我需要更改使用的前缀)。

【问题讨论】:

  • 不,没有办法让它自动截断或编辑列名,AFAIK。您可以使用\G 垂直而不是水平显示列。
  • @Barmar 该选项不能回答我的问题,但确实可以解决我的问题。将其作为答案发布,我会将其标记为我的有效答案(并举例说明\G 选项必须写在句末而不是;
  • 您也可以使用像 PhpMyAdmin 这样的图形表格查看器。这些都不算“编程”,恕我直言。

标签: mysql


【解决方案1】:

我认为没有任何方法可以自动执行此操作。一些选项是:

1) 使用 PhpMyAdmin 等图形用户界面查看表格内容。这些通常允许您调整列宽。

2) 以\G 结束查询,而不是;

    mysql> SELECT * FROM seat LIMIT 2\G

这将水平而不是垂直显示列:

      seat_id: 4897
 seat_created: 2016-09-01 00:05:54
seat_event_id: 330
...

我经常将后者用于包含大量列的表格,因为读取水平格式可能很困难,尤其是当它在终端上环绕时。

3) 在不换行的模式下使用less 寻呼机。然后,您可以使用箭头键左右滚动。

    mysql> pager less -S

How to better display MySQL table on Terminal

【讨论】:

  • 你为什么回滚我的版本?如果输出未显示为未格式化,则无法理解该问题。
  • 你看了吗?它完全不可读,因为它执行了换行。
  • 问题是关于列标题,你看不到它们在哪里。
  • 这正是预期的问题,表明很难知道列内容指的是哪个列标题。
  • 现在我理解得更好了,看看我的新选项 3。
【解决方案2】:

您可以通过使用-N--skip-column-names 选项运行MySQL 客户端来完全跳过列名。那么你的列的宽度将由最宽的数据决定,而不是列名。但列名将有 no 行。

您也可以使用列别名来设置您自己的列名,但您必须自己手动输入这些名称。

【讨论】:

  • 谢谢,但我需要知道列名,因为我看到了我不知道的表。
猜你喜欢
  • 1970-01-01
  • 2021-08-23
  • 2010-12-03
  • 1970-01-01
  • 2013-10-04
  • 2015-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多