我正在使用PuTTY运行:
mysql> SELECT * FROM sometable;
Sometable有许多字段,这导致许多列试图显示在终端中。字段换行到下一行,因此很难将列标题与字段值对齐。
在终端中查看这些数据有什么解决方案?
我没有也不想访问phpMyAdmin -或任何其他GUI界面。我正在寻找这样的命令行解决方案:将MySQL查询结果保存为文本或CVS文件
我正在使用PuTTY运行:
mysql> SELECT * FROM sometable;
Sometable有许多字段,这导致许多列试图显示在终端中。字段换行到下一行,因此很难将列标题与字段值对齐。
在终端中查看这些数据有什么解决方案?
我没有也不想访问phpMyAdmin -或任何其他GUI界面。我正在寻找这样的命令行解决方案:将MySQL查询结果保存为文本或CVS文件
当前回答
你可以使用tee将你的查询结果写入一个文件:
tee somepath\filename.txt
其他回答
只是为了补充我认为最好的答案,我也用了更少的-SFX,但以不同的方式:我喜欢把它广告到我的。my.cnf文件在我的主文件夹,一个例子cnf文件看起来像这样:
[client]
user=root
password=MyPwD
[mysql]
pager='less -SFX'
这样做的好处是,只有当查询的输出实际上超过一页长时才使用less,这里是所有标志的解释:
-S:单行,当一行比屏幕宽时不要跳过一行,而是允许向右滚动。 -F:如果一个屏幕退出,如果内容不需要滚动,然后发送到标准输出。 -X:没有init,禁用“less”可能配置为每次加载时输出的输出。
注意:在.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;
用\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
...
尝试启用垂直模式,使用\G来执行查询,而不是;:
mysql> SELECT * FROM sometable \G
结果将以垂直模式列出,因此每个列的值将打印在单独的行上。输出将更窄,但显然更长。