是否可以在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)
我问的原因是因为我需要复制输出并将其粘贴到其他工具上,这是一项繁琐的工作。
答案 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)
\
答案 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,结果始终显示为无行或非表格格式。后来意识到当您右键单击查询空间时,有一个选项,导航到“结果到”>“结果到网格”。这应该将其设置回表格格式。
还有一个“结果文本”选项,这是我遇到的格式。
:)!