Назад | Перейти на главную страницу

Необходимо получить результат только одного столбца из переменных состояния MySQL

Я хотел получить только значение из переменных состояния. Предположим, что запрос

show status where Variable_name='Aborted_clients'

Он возвращается

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

Отсюда мне нужно получить только значение столбца «Значение». Там в любом случае. Когда я пытаюсь выполнить этот запрос в качестве подзапроса, он выдает ошибку.

Я использую MySQL версии 5.0.24. И ОС - это windows

Перейдите в базу данных 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> 
$ mysql -u root -p --skip-column-name -e \
    "show status where variable_name='Aborted_clients';" | awk '{ print $2 }'

Если вы хотите сделать это в сценарии оболочки, поставьте ~/.my.cnf файл в $ HOME с содержанием ниже:

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

Если вы используете MySQL в Windows, взгляните на таращиться:

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

Это будет эхом для двух токенов

  • Aborted_clients
  • номер

Я не специалист по Windows, но знаю кое-что, что вам придется подражать Linux.

В команда awk это то, что вам нужно.

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

Проблема в том, что awk не существует на языке пакетной обработки Windows или в PowerShell. Тем не мение, вот хороший пост в блоге о том, как его эмулировать в Windows PowerShell..

Я надеюсь, что это помогает.