PostgreSQLとMySQLのSelect文の結果をテキスト出力する
Select文の結果をテキストファイルへ出力したかったのだが、調べたらできることがわかったので、そのメモ。
PostgreSQL
copyというコマンドが使える。
PostgreSQL-7.1-ja : COPY
PostgreSQL-8.1-ja : COPY
使用例
以下の例は、PostgreSQL Version 8.1.11 で実験したものです。
テーブルを丸ごとテキストに出力する例
postgres=# copy hoge_table to '/tmp/hoge_tbl_export.csv' CSV;
一時テーブルを利用して、where句を利用した結果を出力する例
BEGIN; CREATE TEMP TABLE a_list_fugas AS SELECT * FROM hoge_table WHERE name LIKE 'fuga%'; COPY a_list_fugas TO '/tmp/hoge_tbl_export_fugas.csv' CSV; ROLLBACK;
PostgreSQL Vertion 8.2 からは 以下のように Select文が使えるようになったようです。
postgres=# copy (select * from hoge_table where id = 1) TO '/tmp/hoge_tbl_export.csv';
[PostgreSQLウォッチ]第30回 ベータ・テストが間近に迫ったPostgreSQL 8.2の新機能(4ページ目) | 日経 xTECH(クロステック)
MySQL
INTO OUTFILE節を利用すれば、selectの結果をファイルへ出力できる。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.9 SELECT 構文
mysql> select * from hoge_table into outfile 'FILE_NAME';
SELECT ... INTO OUTFILE ステートメントの用途は、主に、サーバマシン上のテーブルのダンプをきわめて迅速に実行できるようにすることである。サーバホスト以外のホストに結果のファイルを作成する必要があるときには、SELECT ... INTO OUTFILE は使用できない。この場合、代わりに、mysqldump --tab や mysql -e "SELECT ..." > outfile などのクライアントプログラムを使用してファイルを生成する。
いやー、便利な機能ありますねー。