Я хотел получить только значение из переменных состояния. Предположим, что запрос
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
Это будет эхом для двух токенов
Я не специалист по Windows, но знаю кое-что, что вам придется подражать Linux.
В команда awk это то, что вам нужно.
C:\> mysql -u... -p... -A -N -e"show global status like 'Aborted_clients'" | awk '{print $2}'
Проблема в том, что awk не существует на языке пакетной обработки Windows или в PowerShell. Тем не мение, вот хороший пост в блоге о том, как его эмулировать в Windows PowerShell..
Я надеюсь, что это помогает.