Chr*_*cob 250 mysql select command-line putty
我正在使用PuTTY运行:
mysql> SELECT * FROM sometable;
Run Code Online (Sandbox Code Playgroud)
sometable有许多字段,这导致许多列试图在终端中显示.字段将换行到下一行,因此很难将列标题与字段值对齐.
在终端中查看此类数据有哪些解决方案?
我没有也不想访问phpMyAdmin - 或任何其他GUI界面.我正在寻找这样的命令行解决方案:将MySQL Query结果保存到文本或CVS文件中
Ryt*_*mis 474
SELECT * FROM sometable\G
Run Code Online (Sandbox Code Playgroud)
此查询垂直显示行,如下所示:
*************************** 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
...
Run Code Online (Sandbox Code Playgroud)
Dan*_*ler 333
您可能还会发现这个有用(仅限非Windows):
mysql> pager less -SFX
mysql> SELECT * FROM sometable;
Run Code Online (Sandbox Code Playgroud)
这将通过less命令行工具管道输出- 使用这些参数 - 将为您提供一个表格输出,可以使用光标键水平和垂直滚动.
通过q按键退出此视图,这将退出该less工具.
Swi*_*ety 42
尝试启用垂直模式,使用\G执行查询而不是;:
mysql> SELECT * FROM sometable \G
Run Code Online (Sandbox Code Playgroud)
您的结果将以垂直模式列出,因此每个列值将打印在单独的行中.输出将更窄但显然更长.
dav*_*dmh 23
您可以使用--table或-t选项,它将输出一组漂亮的结果
echo 'desc table_name' | mysql -uroot database -t
Run Code Online (Sandbox Code Playgroud)
或者将查询传递给mysql的其他方法,例如:
mysql -uroot table_name --table < /tmp/somequery.sql
Run Code Online (Sandbox Code Playgroud)
输出:
+--------------+--------------+------+-----+---------+----------------+
| 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 | |
+--------------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
Ron*_*eau 19
mysql's ego命令从mysql的help命令:
ego(\ G)发送命令到mysql服务器,垂直显示结果.
因此,通过附加\G到你select,你可以得到一个非常干净的垂直输出:
mysql> SELECT * FROM sometable \G
Run Code Online (Sandbox Code Playgroud)
您可以告诉MySQL使用less寻呼机,其-S选项可以切断宽线并为您提供可以使用箭头键滚动的输出:
mysql> pager less -S
Run Code Online (Sandbox Code Playgroud)
因此,下次运行具有宽输出的命令时,MySQL将允许您使用less寻呼机浏览输出:
mysql> SELECT * FROM sometable;
Run Code Online (Sandbox Code Playgroud)
如果您已完成寻呼机并希望返回常规输出stdout,请使用以下命令:
mysql> nopager
Run Code Online (Sandbox Code Playgroud)
小智 7
默认的寻呼机是stdout.stdout具有列限制,因此输出将被包装.您可以将其他工具设置为寻呼机以格式化输出.有两种方法.一种是限制列,另一种是在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>
Run Code Online (Sandbox Code Playgroud)
输出不完整.内容适合您的屏幕.
第二个:
将vim模式设置为nowrap在.vimrc中
? ~ 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
+-----------+------------+------------+-------------+-------------+----------
~
~
~
Run Code Online (Sandbox Code Playgroud)
只是为了补充我认为最好的答案,我还使用less -SFX了另一种方式:我喜欢将其添加到.my.cnf主文件夹中的文件中,一个示例cnf文件如下所示:
[client]
user=root
password=MyPwD
[mysql]
pager='less -SFX'
Run Code Online (Sandbox Code Playgroud)
这样做的好处是,less仅当查询的输出实际上超过一页时才使用,这里是所有标志的解释:
注意:在.my.cnf文件中不要将pager命令放在[client]关键字下面;尽管可能效果mysql很好,但mysqldump会抱怨无法识别它。
| 归档时间: |
|
| 查看次数: |
179682 次 |
| 最近记录: |