我在使用 腻子 运行:

mysql> SELECT * FROM sometable;

sometable 有许多领域和这种结果在很多列试图将显示在终端。该领域包裹到下一个线所以它是非常困难的行列标题领域的价值观。

什么方案都是为了查看这些数据在终端?

我没有,也不要访问的头文件或任何其他GUI接口。我在寻找的命令行的解决方案,例如: 保存MySQL查询结果纳入文本或CVS文件

有帮助吗?

解决方案

终止与\G查询的 代替 ;的。例如:

SELECT * FROM sometable\G

此查询垂直显示的行,如下所示:

*************************** 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):

mysql> pager less -SFX
mysql> SELECT * FROM sometable;

此将管通过less命令行工具outut其中 - 与这些参数 - 会给你一个表格输出,可以水平和垂直地使用光标键来滚动

通过敲击q键,这将退出less工具离开这个视图。

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

mysql> SELECT * FROM sometable \G

您的结果将在竖直模式中列出的,所以每列值将在单独的行被打印。输出将是较窄的,但显然要长得多。

可以使用--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    |                |
+--------------+--------------+------+-----+---------+----------------+

使用mysqlego命令

mysqlhelp命令:

  

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

因此,通过追加\Gselect,你可以得到一个非常干净的垂直输出:

mysql> SELECT * FROM sometable \G;

使用寻呼机

您可以告诉MySQL使用的less寻呼机与砍下宽的线,给你的输出,你可以用方向键来滚动其-S选项:

mysql> pager less -S

因此,下一次运行具有一个宽的输出的命令,MySQL将让你浏览与less寻呼机的输出:

mysql> SELECT * FROM sometable;

如果您正在使用寻呼机做,想回去就stdout常规输出,这样使用:

mysql> nopager

默认寻呼机是标准输出。标准输出具有列的限制,因此,输出将被缠绕。您可以设置其它的工具如寻呼机格式化输出。有两种方法。一个是限制柱,另一种是对处理它在vim。

第一种方法:

➜  ~  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 NOWRAP

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

只是为了补充答案,我认为最好的,我也使用 less -SFX 但在一个不同的方式:我喜欢到我的广告 .my.cnf 文件在我家里的文件夹,例cnf文件看起来是这样的:

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

对好事有关具有这样说,是, less 只时所使用的输出的查询是实际上超过一页长,这是解释的标志:

  • -S:单个线,不要跳过行在线更宽屏幕上,而不是允许滚动的权利。
  • -F: 退出,如果一个屏幕, 如果内容不需要然后就滚动发送到stdout。
  • -X:没有init,禁止任何产出"不"可能具有构成为输出每一次装载。

注:在 .my.cnf 文件不放的 pager 下命令的 [client] 关键词;虽然它可能有工作 mysql 好了, mysqldump 会抱怨不承认它。

如果您正在交互使用MySQL,你可以设置你的传呼机使用sed这样的:

$ mysql -u <user> p<password>
mysql> pager sed 's/,/\n/g' 
PAGER set to 'sed 's/,/\n/g''
mysql> SELECT blah FROM blah WHERE blah = blah 
.
.
.
"blah":"blah"
"blah":"blah"
"blah":"blah"

如果您不使用sed如寻呼机,输出是这样的:

"blah":"blah","blah":"blah","blah":"blah"

我写pspg - https://github.com/okbob/pspg

此寻呼机被设计用于表格数据 - 和MySQL支持太

MariaDB [sakila]> pager pspg -s 14 -X --force-uniborder --quit-if-one-screen
PAGER set to 'pspg -s 14 -X --force-uniborder --quit-if-one-screen'
MariaDB [sakila]> select now();
MariaDB [sakila]> select * from nicer_but_slower_film_list limit 100;

我相信腻子有你可以指定窗口列的最大数量。

有关视窗我个人使用Windows PowerShell和设置屏幕缓冲器宽度相当高。列的宽度保持固定,可以使用水平滚动条看到的数据。我现在遇到了同样的问题。

编辑:对于您必须SSH到你会使用类似砰砰+的Windows PowerShell远程主机

您可以使用tee写你的查询到一个文件的结果是:

tee somepath\filename.txt

使用Windows命令提示符可以增加窗口的缓冲区大小尽可能多的你想看到的列数。这依赖于没有列在表中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top