我只想从状态变量中获取值。假设查询是
show status where Variable_name='Aborted_clients'
它返回
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| Aborted_clients | 4 |
+-----------------+-------+
从这里我只需要获取“Value”列的值。有什么办法吗?当我尝试将此查询作为子查询时,它会抛出错误。
我使用的是 MySQL 版本 5.0.24。操作系统是 Windows
答案1
转到 information_schema 数据库并从 global_status 表中进行选择:
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>
答案2
$ mysql -u root -p --skip-column-name -e \
"show status where variable_name='Aborted_clients';" | awk '{ print $2 }'
如果您想在 shell 脚本中执行此操作,请将~/.my.cnf
包含以下内容的文件放在 $HOME 中:
[mysql]
user = root
password = pa$$w0rd
host = localhost
如果你在 Windows 上运行 MySQL,请查看呆呆地:
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 }"
答案3
当然,您可以使用以下内容:
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}'
问题是 Windows 批处理语言和 PowerShell 中不存在 awk。但是,这是一篇关于如何在 Windows PowerShell 中模拟它的精彩博客文章。
我希望它有帮助。