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 などのクライアントプログラムを使用してファイルを生成する。


いやー、便利な機能ありますねー。