MySQLでSQL実行結果をファイルへ出力

SQL実行結果をファイルに保存して利用したい場合に。

ターミナルの場合

リダイレクトを使って保存します。

具体例を示します。

mysqlクライアントの場合

実行するには下記の条件を満たす必要があります。

  1. 実行するmysqlユーザーはFILE権限が必要
  2. 出力先ディレクトリに実行・書込権限が必要
  3. 出力先ファイルの指定はフルパスで行う事(例:”~/result.txt” といった指定は不可)

1.については、こちらを参考にFILE権限を与えて下さい。

2.については出力先ディクレトリへmysqld実行ユーザーが書き込める権限を与えて下さい。とりあえず試したいだけでしたら、/tmp/に出力すると良いでしょう。

3.についてはフルパスで指定するしかありません。上記の例のファイルを指定するならば、”/home/user/result.txt” と記述します。

2と3について補足すると、mysqlコマンドでサーバーへ接続後に行う処理は、全てmysqld実行ユーザーが行う事になります。よって、mysqld実行ユーザーに書き込み権限がないとファイル出力できず、ログインしているユーザーのホームディレクトリを”~”で参照もできないのです。

上記を踏まえて、下記のコマンドを実行して下さい。SQL実行結果をファイルへ出力します。

具体例を記します。

FIELESオプションでフィールド区切り文字(デフォルトはタブ)を変更できます。省略しますが、同様にLINESオプションで改行コードを変更出来ます。