2013-07-15 236 views
-3

如何執行MySQL查詢並避免在輸出中包含查詢或別名?我嘗試過「」(空字符串)作爲別名,但我沒有得到預期的結果,因爲我終於有了一個空白行。僅在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

你能發佈你已經試過的代碼嗎? – SteveP

+1

不知道你在說什麼。顯示一些實際的代碼。 –

+0

我添加了代碼,我希望現在清楚。 – JohnTube

回答

8

我想我明白你的意思,你只需要打印無箱和標題查詢的結果,因此,開始你的MySQL客戶端方式如下: mysql -uroot -p -s -r -N

這將抑制querys周圍框的輸出以及列名稱。您也可以使用-e參數來執行您的查詢,然後在將查詢結果打印到標準輸出之後退出mysql客戶端,在腳本中使用時這是有用的。請看下面的(簡化的)例子:

[[email protected] ~]# mysql -uroot -p******* -s -r -N -e "select 1+1" 
2 
[[email protected] ~]# 
+0

它的工作原理。謝謝。 – JohnTube

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' 
     ); 
+0

我試過「」(空字符串)作爲別名了。我不想要任何別名!只是查詢的結果。 – JohnTube

+0

@JohnTube:你爲什麼在意? – eggyal

+0

我將輸出重定向到另一個壓縮的json格式的軟件,所以即使是空行也不被接受! – JohnTube