AmazonのCloud9を使っています。データベースはMySQLです。
MySQLでの検索結果をテキストファイルに落としたい出力したいと思いました。
というのもselect文を発行すると件数が非常に多く(1000件とか)Cloud9のターミナル上では全部表示できないので。
参考になるページを見つけてやってみたのですが
SELECT INTO OUTFILEを使う方法
SELECT * FROM テーブル INTO OUTFILE ‘ファイル名’;
をやってみたのですが駄目でした。
$ mysql -u root
mysql USE データベース名;
とやって、
ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement
というエラーが出ます。
サーバオプションのsecure_file_privが設定されていると、設定されたディレクトリ以外への出力はエラーになるようです。
以下のSQL文を発行して/var/lib/mysql-files/と入っているのでこのディレクトリに出力しないといけない模様。
+———————–+
| @@secure_file_priv |
+———————–+
| /var/lib/mysql-files/ |
+———————–+
1 row in set (0.00 sec)
なのでSQL文を以下のようにしました。
Query OK, 1146 rows affected (0.02 sec)
よくわからないけど、これで出たのかな。と思い上記のディレクトリにcdで移動してみます。
bash: cd: /var/lib/mysql-files/: Permission denied
すると権限がなくて駄目と言われます。これではせっかく出力したテキストファイルを取得できないじゃないですか。
ということで他の方法も探してみました。
teeとnoteeを使ってファイル出力する方法
今度はちゃんとできました。
mysql USE データベース名;
とやって
↓このように記述していきます。
>mysql select * from users;
>mysql notee
以下のような表示がされます。
Logging to file ‘dump.txt’
>mysql select * from users;
1146 rows in set (0.00 sec)
mysql> notee
Outfile disabled.
mysql> exit;
すると、いま居るディレクトリ配下にdump.txtというファイルが出来ています。