SQL の実行結果などをファイルに出力する
スポンサードリンク
MySQL で SQL の実行結果など標準出力への出力内容をファイルに出力する方法について説明します。
尚、このページで紹介する方法は、MySQL 接続後に記録開始、記録終了を明示的に指定して記録する方法なので、MySQL 接続から切断まで無条件にすべて出力したい場合は、次の関連ページを参照してください。
ファイルの出力を開始するには、MySQL 接続語に tee を実行し、出力終了時には notee を実行します。
出力開始時
tee 出力先ファイルパス /* 以下でも良い */ \T 出力先ファイルパス
出力終了時
notee /* 以下でも良い */ \t
出力先のファイルパスは絶対パスでも相対パスでも構いません。ファイル名だけを指定した場合は、mysql へ接続したフォルダ(ディレクトリ)にファイルが生成されます。また、存在するファイルを指定した場合は、上書きではなく新しい出力内容をもとのファイルの最後に追加していきます。
実行例
mysql> SELECT COUNT(*); +----------+ | COUNT(*) | +----------+ | 1 | +----------+ 1 row in set (0.00 sec) mysql> tee output.txt ← ここから出力開始。これ以前は記録されない。 Logging to file 'output.txt' mysql> SELECT RAND(); +-------------------+ | RAND() | +-------------------+ | 0.275577789429182 | +-------------------+ 1 row in set (0.00 sec) mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2014-12-17 20:54:35 | +---------------------+ 1 row in set (0.00 sec) mysql> notee ← ここで出力終了。これ以降は記録されない。 Outfile disabled. mysql> SELECT COUNT(*) -> ; +----------+ | COUNT(*) | +----------+ | 1 | +----------+ 1 row in set (0.00 sec) mysql>
上記の結果、 output.txt に出力された内容は次の通りです。
mysql> SELECT RAND(); +-------------------+ | RAND() | +-------------------+ | 0.275577789429182 | +-------------------+ 1 row in set (0.00 sec) mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2014-12-17 20:54:35 | +---------------------+ 1 row in set (0.00 sec) mysql> notee
tee, notee の代わりに \T, \t を使用した例は次の通りです。
mysql> \T output.txt Logging to file 'output.txt' mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2014-12-18 01:12:36 | +---------------------+ 1 row in set (0.00 sec) mysql> \t Outfile disabled. mysql>
上記の結果、 output.txt に次の内容が出力されました。
mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2014-12-18 01:12:36 | +---------------------+ 1 row in set (0.00 sec) mysql> \t
スポンサードリンク