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 '"';