在mysql shell中显示没有表行的查询结果(非表格输出)

时间:2013-09-05 07:42:28

标签: mysql sql

是否可以在mysql shell中显示如下所示的查询结果?

mysql> select code, created_at from my_records;
    code         created_at
1213307927  2013-04-26 09:52:10
8400000000  2013-04-29 23:38:48
8311000001  2013-04-29 23:38:48
3 rows in set (0.00 sec)

而不是

mysql> select code, created_at from my_records;
+------------+---------------------+
|     code   |          created_at |
+------------+---------------------+
| 1213307927 | 2013-04-26 09:52:10 |
| 8400000000 | 2013-04-29 23:38:48 |
| 8311000001 | 2013-04-29 23:38:48 |
+------------+---------------------+
3 rows in set (0.00 sec)

我问的原因是因为我需要复制输出并将其粘贴到其他工具上,这是一项繁琐的工作。

7 个答案:

答案 0 :(得分:22)

  

- raw,-r

对于表格输出,列周围的“装箱”可以将一个列值与另一个列值区分开来。对于非表格输出(例如以批处理模式或在给出--batch或--silent选项时生成),特殊字符将在输出中转义,以便可以轻松识别它们。换行符,制表符,NUL和反斜杠写为\ n,\ t,\ 0和\\。 --raw选项禁用此字符转义。

以下示例演示了表格与非表格输出以及使用原始模式禁用转义:

% mysql
mysql> SELECT CHAR(92);
+----------+
| CHAR(92) |
+----------+
| \        |
+----------+

% mysql -s
mysql> SELECT CHAR(92);
CHAR(92)
\\

% mysql -s -r
mysql> SELECT CHAR(92);
CHAR(92)
\

来自MySQL Docs

答案 1 :(得分:8)

不完全符合您的要求,但它可能很有用。在查询末尾添加\ G

select code, created_at from my_records\G;

查询结果如下所示:

*************************** 1. row ***************************
 code: 1213307927
 created_at: 2013-04-26 09:52:10
*************************** 2. row ***************************
 code: 8400000000  
 created_at: 2013-04-29 23:38:48

答案 2 :(得分:2)

一衬垫

mysql -u YOURUSER -p --password=YOURPASSWORD -s -r -e "show databases;"        
mysql -u root -p --password=abc12345 -s -r -e "show databases;"

答案 3 :(得分:1)

我解决了这个问题,但是使用concat_ws将结果连接在一起,然后添加一个空格(第一个参数)

Backup

答案 4 :(得分:0)

如果要获取不带周围表的MySQL客户端输出,则可以从linux命令行而不是通过mysql客户端运行查询:

$ echo "SELECT CONCAT_WS(' ','DROP TABLE',TABLE_NAME,';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%';" | mysql dbname

奖金:您可以通过排序和填充,甚至通过管道返回到mysql:

$ echo "SELECT CONCAT_WS(' ','DROP TABLE',CONCAT_WS('.',TABLE_SCHEMA,TABLE_NAME),';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'i\'m\_not\_that\_mean';" | mysql | mysql;

答案 5 :(得分:0)

快速解决方法:

使用更新的 MySQL 客户端(不确定是哪个版本),您可以使用 PAGER 指令来操作结果。请注意,您可能需要更改 sed 表达式以避免破坏数据。

> PAGER sed 's/|//g'
PAGER set to 'sed 's/|//g''
barracuda@db-ess-rw.us-east-2.ess.aws.vt2.com [ess]
> SELECT 'row1_col1' AS column1, 'row1_col2' AS column2
  UNION ALL SELECT 'row2_col1', 'row2_col2';
+---------+---------+
 column1  column2 
+---------+---------+
 row1_col1  row1_col2 
 row2_col1  row2_col2 
+---------+---------+
2 rows in set (0.00 sec)

在执行此操作之前,您可能需要获取 PAGER 的当前值:

> PAGER
PAGER set to 'less'

重置为使用 'less' 作为 PAGER

> PAGER less
PAGER set to 'less'

PAGER 带来更多乐趣:

https://www.percona.com/blog/2013/01/21/fun-with-the-mysql-pager-command/

答案 6 :(得分:-1)

因此对问题和答案感到困惑。运行sql,结果始终显示为无行或非表格格式。后来意识到当您右键单击查询空间时,有一个选项,导航到“结果到”>“结果到网格”。这应该将其设置回表格格式。

还有一个“结果文本”选项,这是我遇到的格式。

:)!