Precisa buscar resultado de apenas uma coluna das variáveis de status do MySQL

1

Eu queria buscar apenas o valor das variáveis de status. Suponha que a consulta seja

show status where Variable_name='Aborted_clients'

Retorna

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| Aborted_clients | 4     |
+-----------------+-------+

A partir daqui, preciso buscar apenas o valor da coluna "Valor". Existe alguma maneira. Quando estou tentando essa consulta como subconsulta, está causando erro.

Estou usando o MySQL versão 5.0.24. E o sistema operacional é o windows

    
por Phanindra 11.10.2011 / 14:24

3 respostas

2

Vá para o banco de dados information_schema e faça uma seleção da tabela 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> 
    
por 11.10.2011 / 14:58
1
$ mysql -u root -p --skip-column-name -e \
    "show status where variable_name='Aborted_clients';" | awk '{ print $2 }'

Se você quiser fazer isso em um script de shell, coloque um arquivo ~/.my.cnf em $ HOME com o conteúdo abaixo:

[mysql]
user     = root
password = pa$$w0rd
host     = localhost

Se você estiver executando o MySQL no Windows, dê uma olhada no 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 }"
    
por 11.10.2011 / 14:58
1

Claro, você pode usar o seguinte:

C:\> mysql -u... -p... -A -N -e"show global status like 'Aborted_clients'" > abc.txt

Isso vai ecoar dois tokens

  • Aborted_clients
  • o número

Eu não sou especialista em Windows, mas sei de algo que você terá que emular do Linux.

O comando do awk é o que você precisa.

C:\> mysql -u... -p... -A -N -e"show global status like 'Aborted_clients'" | awk '{print $2}'

O problema é que o awk não existe na linguagem de lote do Windows ou no PowerShell. No entanto, aqui está um bom post de blog sobre como emulá-lo no Windows PowerShell .

Espero que ajude.

    
por 12.10.2011 / 05:06

Tags