web-dev-qa-db-ja.com

印刷しないmysqlは出力を端末に選択します

簡単な質問:DBをウォームアップするcomeコマンドを作成しました。事はそれらの選択が大きいということです。このような選択を行うと、「jiba-jaba」がすべてターミナルウィンドウに表示されます。どのようにしてmysqlに選択を「静かに」させることができますか?私の端末にすべてのがらくたを印刷するのに年齢をかけずに?

7
Katafalkas

シェルのI/Oリダイレクト演算子を使用して、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>&1stderrおよびstdoutをリダイレクトします。端末でエラーを確認したい場合は、stdoutのみをリダイレクトします。

$ mysql mydb < commands.sql > /dev/null
8
larsks
  1. mysql-client:

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

    この方法では、クエリの結果は出力されず、行のみがタイミング情報をカウントします。

  2. シェルでのIOリダイレクト

    user@Host$ mysql -e 'select 1' > /dev/null
    user@Host$
    
10
m.sr

目的がキャッシュのウォームアップである場合、次のようなこともできます:

select my(concat(col1、col2))from mytable where ...

エンジンは、実際のページを読み取って最大値を計算することを強制されます(とにかく、I/Oに関連するオーバーヘッドはほとんどありません)。

インデックスから列のみを選択すると、インデックスのみが赤になり、テーブル自体(「カバーインデックス」)に移動する必要がないことに注意してください。
場合によっては、まさにそれが必要になるかもしれません(キャッシュにインデックスのみをロードします)

1
phil_w

これは、mysqlのUnixインストールで動作しています。 Windowsのmysqlインストールには/ dev/nullもページャーコマンドもないため、Windowsにインストールされたmysqlでは機能しません。

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は繰り返し選択に対して機能しないため、出力ファイルを上書きすることはできません。

0
mtherocket