MW211 EXIT

devlog
PostgreSQL/COPY句を使ってファイル出力
2013年02月09日
「COPY」句は、結果をファイルとして出力してくれる便利な命令。
出力先ファイルは上書されるので注意。

テーブルをバイナリファイル形式で出力する。
┌──────────────────────────────────────┐
│COPY BINARY 表 TO 'C:\表.bin';                                              │
└──────────────────────────────────────┘

テーブルをTSVファイル形式で出力する。
┌──────────────────────────────────────┐
│COPY 表 TO 'C:\表.tsv';                                                     │
└──────────────────────────────────────┘

テーブルをCSVファイル形式で出力する。
┌──────────────────────────────────────┐
│COPY 表 TO 'C:\表.csv' WITH CSV;                                            │
└──────────────────────────────────────┘

任意の区切文字を指定して出力する。(以下の例では「|」を区切文字として指定)
┌──────────────────────────────────────┐
│COPY 表 TO 'C:\表.txt' USING DELIMITERS '|';                                │
└──────────────────────────────────────┘
区切文字は1バイト文字しかダメなようです。

NULL文字を置換する。(以下の例ではNULL文字を「??」に置換するよう指定)
┌──────────────────────────────────────┐
│COPY 表 TO 'C:\表.txt' WITH NULL AS '??';                                 │
└──────────────────────────────────────┘
こちらはなんでもOKのようです。

文字コードを指定して出力する。(以下の例では「Shift_JIS」を指定)
┌──────────────────────────────────────┐
│COPY 表 TO 'C:\表.txt' WITH encoding 'SJIS';                                │
└──────────────────────────────────────┘

SQLの結果も出力できます。(っていうか、こっちが本題っぽい)
┌──────────────────────────────────────┐
│COPY (SELECT NOW()) TO 'C:\表.txt';                                         │
└──────────────────────────────────────┘
分類:PostgreSQL