質問: Oracle SQLでSPOOLコマンドを使用してクエリ結果をファイルに保存しましたが、すべて完了したら、スプールをオフにすることができます。 MySQLで同じことをどのように達成できますか?たとえば、MySQLでは、「SHOW FULL PROCESSLIST」クエリは、現在画面上で実行されているすべてのMySQLプロセスを一覧表示します(長いリストの場合は、画面の最後の数行のみが表示されます)。クエリ結果をファイルに保存するためのSPOOLのようなコマンドがMySQLにあるかどうか知りたいですか?または、少なくとも「more」のようなシェルコマンドに出力をパイプ(|)できるはずです。
ORACLE SQLの場合:
クエリ結果の出力をファイルに保存するには、spoolを使用します。
sqlplus> SPOOL /tmp/output.txt sqlplus> select * from UserTable; sqlplus> SPOOL off;
回答:MySQLの場合
方法1:
MySQLにはSPOOLコマンドはありませんが、代替コマンド teeを使用できます。 ロギングをオンにして注 ロギングをオフにします。
mysql> tee /tmp/test.txt Logging to file '/tmp/test.txt' mysql> show full processlist; +------+-----------+-----------+--------+---------+------+-------+-----------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+-----------+-----------+--------+---------+------+-------+-----------------------+ | 7478 | sample | host.name| dbname | Sleep | 0 | | NULL | | 7479 | sample | host.name | NULL | Query | 0 | NULL | show full processlist | +------+-----------+-----------+--------+---------+------+-------+-----------------------+ 2 rows in set (0.00 sec) mysql> notee Outfile disabled.
これで、ログファイル/tmp/text.txtを確認できます。
方法2: シェルプロンプトからMySQLクエリを実行し、出力をより多くにパイプすることができます。
$ mysql -u root -p -e "show full processlist" | more
注: プロセスリストクエリを実行するには特権が必要です。
方法3: 以下に示すように、シェルプロンプトからクエリを実行し、出力をファイルにリダイレクトできます。
$ mysql -u root -p -e "show full processlist" | tee /tmp/out.txt
(または)
$ mysql -u root -p -e "show full processlist" > /tmp/out.txt
SELECTクエリに使用されるSELECTINTOOUTFILE:
選択クエリを実行している場合は、以下に示すようにSELECTINTOOUTFILEを使用できます。
mysql> select * into outfile '/tmp/out.txt' from user_table;
お役に立てば幸いです。
[Linux]:MTRを使用してネットワークの問題を診断– tracerouteよりも優れています!
システムツールを壊さずに複数のバージョンのPython(2.7および3.5)をインストールし、Virtualenvを使用して分離環境を作成するにはどうすればよいですか?