需要从 MySQL 状态变量中仅获取一列的结果

需要从 MySQL 状态变量中仅获取一列的结果

我只想从状态变量中获取值。假设查询是

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 中模拟它的精彩博客文章

我希望它有帮助。

相关内容