Командная строка: войдите в MySQL и выполните команду в одной строке - PullRequest
6 голосов
/ 04 марта 2011

Мне часто приходится проверять структуру таблицы (например, проверять имена столбцов при написании PHP-скрипта).Моя единственная цель: скорость.Я использую "Adminer" и в несколько кликов я могу проверить это.Но я хочу сделать это быстрее, с окном командной строки, которое я всегда открываю.Поэтому я хотел бы создать функцию, которая позволяет мне делать что-то вроде:

mysql -uuser -ppassword && USE database; && DESCRIBE table;

Я бы назвал это так, чтобы я мог вызвать:

describe database.table

И вуаля, я получаю структуру базы данных.Но моя проблема: как я могу войти в MySQL и выполнить определенные запросы в одном скрипте?Я не нашел способ сделать это.

Ответы [ 2 ]

11 голосов
/ 04 марта 2011
mysql database -uuser -ppassword -e "describe table;"

Например:

mysql -uuser -ppassword mysql -e "describe time_zone;"
+------------------+------------------+------+-----+---------+----------------+
| Field            | Type             | Null | Key | Default | Extra          |
+------------------+------------------+------+-----+---------+----------------+
| Time_zone_id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| Use_leap_seconds | enum('Y','N')    | NO   |     | N       |                |
+------------------+------------------+------+-----+---------+----------------+

Если вы ищете способ псевдонима этого в своей оболочке, вы можете использовать функцию, такую ​​как:

function describe() { mysql -uuser -ppassword $1 -e "describe $2;"; }
describe mysql time_zone
+------------------+------------------+------+-----+---------+----------------+
| Field            | Type             | Null | Key | Default | Extra          |
+------------------+------------------+------+-----+---------+----------------+
| Time_zone_id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| Use_leap_seconds | enum('Y','N')    | NO   |     | N       |                |
+------------------+------------------+------+-----+---------+----------------+
3 голосов
/ 04 марта 2011

Просто альтернативный метод - вместо флага -e вы можете указать свой запрос.полезно, если запрос генерируется каким-либо другим процессом:

echo "DESCRIBE table;" | mysql -uuser -ppassword databasename

или если в файле есть несколько операторов, перечисленных в следующем виде:

# File: statements.sql
DESCRIBE table;
SELECT col FROM table;

Вы можете указать mysql для чтения изфайл:

mysql -uuser -ppassword databasename < statements.sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...