如何执行MySQL查询并避免在输出中使用查询或别名?我尝试了“”(空字符串)作为别名但我没有得到预期的结果,因为我最后得到一个空行。
编辑添加了一些代码
SELECT
CONCAT("{\"counters\":{",
-- Total memory used calculation
"\"mysql.total_memory\":",
((@@read_buffer_size + @@sort_buffer_size) * @@max_connections + @@key_buffer_size),",",
-- other monitored server status variables
GROUP_CONCAT(
CONCAT("\"mysql.",LCASE(VARIABLE_NAME),"\":",VARIABLE_VALUE)
)
,"}}")
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE VARIABLE_NAME = "SLOW_QUERIES"
OR VARIABLE_NAME="Qcache_lowmem_prunes"
OR VARIABLE_NAME="SELECT_FULL_JOIN"
OR VARIABLE_NAME="SELECT_RANGE_CHECK"
OR VARIABLE_NAME="SELECT_SCAN"
OR VARIABLE_NAME="SELECT_RANGE";
我希望将json格式作为输出。我需要这个作为另一个软件的输入。此软件不接受空白行(压缩的json格式)。
edit2:添加了输出
CONCAT("{\"counters\":{",
"\"mysql.total_memory\":",
((@@read_buffer_size + @@sort_buffer_size) * @@max_connections + @@key_buffer_size),",",
GROUP_CONCAT(
CONCAT("\"mysql.",LCASE(VARIABLE_NAME),"\":",VARIABLE_VALUE)
)
,"}}")
{"counters":{"mysql.total_memory":39108608,"mysql.qcache_lowmem_prunes":0,"mysql.select_full_join":0,"mysql.select_range":0,"mysql.select_range_check":0,"mysql.select_scan":84,"mysql.slow_queries":0}}
我想删除“CONCAT(...)”部分,只将结果作为输出。
答案 0 :(得分:10)
我想我知道你的意思,你只希望打印查询的结果没有框和标题,因此以下列方式启动你的mysql客户端:mysql -uroot -p -s -r -N
。
这会压缩查询周围的框以及列名称的输出。您还可以使用-e参数执行查询,然后在将查询结果打印到stdout后退出mysql客户端,在脚本中使用它时这是usefule。请参阅下面(简化的)示例:
[root@db1 ~]# mysql -uroot -p******* -s -r -N -e "select 1+1"
2
[root@db1 ~]#
答案 1 :(得分:0)
必须命名结果集中的每一列。但是你可以用任何你想要的显式(非空)别名来命名。正如SELECT
Syntax所述:
可以使用
select_expr
为AS alias_name
指定别名。
因此,在您的情况下:
SELECT CONCAT(
'{"counters":{',
-- Total memory used calculation
'"mysql.total_memory":', (
(@@read_buffer_size + @@sort_buffer_size) * @@max_connections
+ @@key_buffer_size
),',',
-- other monitored server status variables
GROUP_CONCAT('"mysql.',LCASE(VARIABLE_NAME),'":',VARIABLE_VALUE),
'}}'
) AS my_column -- assign your chosen alias here <===================
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE VARIABLE_NAME IN (
'SLOW_QUERIES',
'Qcache_lowmem_prunes',
'SELECT_FULL_JOIN',
'SELECT_RANGE_CHECK',
'SELECT_SCAN',
'SELECT_RANGE'
);