我只想从状态variables中获取值。 假设查询是
show status where Variable_name='Aborted_clients'
它返回
+-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | Aborted_clients | 4 | +-----------------+-------+
从这里我只需要获取“值”列的值。 有没有办法 当我试图将这个查询作为子查询时,它是抛出错误。
我正在使用MySQL版本5.0.24。 而操作系统是Windows
转到information_schema数据库,然后从global_status表中进行select:
mysql> use information_schema; Database changed mysql> select * from global_status where variable_name='aborted_clients'; +-----------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +-----------------+----------------+ | ABORTED_CLIENTS | 22 | +-----------------+----------------+ 1 row in set (0.01 sec) mysql> select variable_value from global_status where variable_name='aborted_clients'; +----------------+ | variable_value | +----------------+ | 22 | +----------------+ 1 row in set (0.01 sec) mysql>
$ mysql -u root -p --skip-column-name -e \ "show status where variable_name='Aborted_clients';" | awk '{ print $2 }'
如果你想在shell脚本中做到这一点,在$ HOME中放置一个~/.my.cnf文件,内容如下:
[mysql] user = root password = pa$$w0rd host = localhost
如果您在Windows上运行MySQL,请查看gawk :
C:\Program Files\MySQL\MySQL Server 5.1\bin>mysql.exe \ --skip-column-name -u root -p -e \ "show status where variable_name='aborted_clients';" | \ "C:\Program Files(x86)\GnuWin32\bin\awk.exe" "{ print $2 }"
当然,您可以使用以下内容:
C:\> mysql -u... -p... -A -N -e"show global status like 'Aborted_clients'" > abc.txt
这将回显两个令牌
我不是Windows专家,但我知道你必须从Linux模拟。
awk命令是你所需要的。
C:\> mysql -u... -p... -A -N -e"show global status like 'Aborted_clients'" | awk '{print $2}'
问题是awk在Windows批处理语言或PowerShell中不存在。 不过, 如何在Windows PowerShell中模拟它 , 这里是一个很好的博客post 。
我希望它有帮助。