MySQLテーブル内のデータをファイル抽出する
ファイル出力方法は大きく分けて2種類ある
①リダイレクトによる出力
echo 'SELECT * FROM t1 ' | mysql -u myuser -p<パスワード> mydb > /tmp/t1.dmp
②SELECT INTO OUTFILE を使用する
SELECT * FROM t1 INTO OUTFILE '/var/lib/mysql-files/t1.dmp' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
ファイルの書き込み先はsecure_file_privで許可されたところを指定する。 上記ディレクトリ以外を指定すると下記エラーが発生する。
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
mysql> SELECT @@secure_file_priv;
+-----------------------+
| @@secure_file_priv |
+-----------------------+
| /var/lib/mysql-files/ |
+-----------------------+
1 row in set (0.00 sec)
参考
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.9.1 SELECT … INTO 構文 https://dev.mysql.com/doc/refman/5.6/ja/select-into.html
SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table;
関連しているかもしれない記事