我正在使用PuTTY运行:

mysql> SELECT * FROM sometable;

Sometable有许多字段,这导致许多列试图显示在终端中。字段换行到下一行,因此很难将列标题与字段值对齐。

在终端中查看这些数据有什么解决方案?

我没有也不想访问phpMyAdmin -或任何其他GUI界面。我正在寻找这样的命令行解决方案:将MySQL查询结果保存为文本或CVS文件


当前回答

如果你是交互使用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"

其他回答

用\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
          ...

如果你是交互使用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"

你可能也会发现这很有用(非windows):

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

这将通过less命令行工具(带有这些参数)管道输出,该工具将为您提供一个可以用光标键水平和垂直滚动的表格输出。

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

使用Windows命令提示符,您可以根据需要增加窗口的缓冲区大小来查看列的数量。这取决于表中列的数目。

你可以使用tee将你的查询结果写入一个文件:

tee somepath\filename.txt