No.156


【PostgreSQL】【MySQL】CSVファイルへの出力

テーブル内容をCSVファイルに出力したい

 MySQLではしょっちゅうやるこの行為、たまたまPostgreSQLではやったことがなかった。

 SQLの標準記法にはないこの機能、データーベースエンジンの数だけ方法があるのでそれぞれ覚えておかねばならない。…ああ、面倒くさい。

 というわけで備忘録がてらメモ。


PostgreSQL

 SELECTではなくCOPYコマンドを使って出力する。

 PostgreSQLのコンソールから実行する方法は以下。

COPY テーブル名 TO 'ファイル名' DELIMITER ','

 カラム指定もできる。

COPY テーブル名(カラム名1,カラム名2,...) TO 'ファイル名' DELIMITER ','

 SELECTを使って取得した内容を出力することもできる。JOINもできる。

COPY (SELECT カラム名 FROM テーブル名 WHERE 検索条件) TO 'ファイル名' DELIMITER ','
COPY (SELECT カラム名 FROM テーブル名 LEFT JOIN テーブル名 ON ...) TO 'ファイル名' DELIMITER ','

 これだけ知ってればまあ困らないだろう。


MySQL

 いちおうMySQLの出力も。

 MySQLは通常のSELECTのあとにINTO OUTFILEをつけるだけなので楽。

SELECT カラム名 FROM テーブル名 INTO OUTFILE 'ファイル名' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';