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

mysql not to print выбирает вывод на терминал

Быстрый вопрос: я создал команды, которые разогреют мою БД. Дело в том, что выборки большие. Когда я делаю такой выбор, я получаю все «jiba-jaba» в окне терминала. Как сделать так, чтобы mysql выполнял выбор «тихо»? не тратя много времени, чтобы печатать всю эту чушь в моем терминале?

  1. mysql-клиент:

    mysql> pager > /dev/null
    PAGER set to '> /dev/null'
    mysql> select 1;
    1 row in set (0.00 sec)
    
    mysql> \q
    Bye
    

    Таким образом, результат запросов не печатается, а только информация о времени подсчета строк.

  2. Перенаправление ввода-вывода в оболочке

    user@host$ mysql -e 'select 1' > /dev/null
    user@host$
    

Вы можете перенаправить вывод любой команды - не только MySQL - с помощью операторов перенаправления ввода-вывода вашей оболочки. Например, в bash:

$ mysql mydb < commands.sql > /dev/null 2>&1

Это запустит клиент командной строки MySQL, подключит его к «mydb» в локальной системе (при условии, что у вас есть доступ), прочитает команды SQL из файла. commands.sql и выгрузите весь вывод в /dev/null.

Если вы хотите сохранить результат для просмотра после факта, вы можете перенаправить его в файл, а не в /dev/null:

$ mysql mydb < commands.sql > output.txt 2>&1

В 2>&1 перенаправляет stderr так же как stdout. Если вы хотите увидеть какие-либо ошибки на своем терминале, вы должны перенаправить только stdout:

$ mysql mydb < commands.sql > /dev/null

Если цель - разогреть кеш, вы также можете сделать что-то вроде:

выберите max (concat (col1, col2)) из mytable, где ...

Движок вынужден читать реальные страницы для вычисления максимума (в любом случае с небольшими накладными расходами по сравнению с вводом-выводом)

Обратите внимание, что если вы выбираете только столбцы из индекса, только индекс красный, нет необходимости переходить к самой таблице («индекс обложки»).
В некоторых случаях вам может понадобиться именно это (загрузить в кеш только индекс)

Это работает с установками MySQL в Unix. Поскольку Windows не имеет ни / dev / null, ни команды пейджера в установке mysql, она не будет работать с mysql, установленным в Windows.

В Windows Mysql (также и в Unix) вы можете использовать SELECT 1 INTO OUTFILE 'file_name' или установить переменную и использовать SELECT 1 INTO @var; Ознакомьтесь с документацией здесь: http://dev.mysql.com/doc/refman/5.0/en/select.html

Имейте в виду, что вы не можете переопределить выходной файл, поэтому INTO Outfile не будет работать для повторяющихся выборок.