
ところで
• (1)SQL版 : TO PROMGRAM構文で指定する外部コマンドが、「サーバの環境」今日の場合はWindowsで実行される。
• (2)psql版 : TO PROMGRAM構文で指定する外部コマンドが、「クライアントの環境」今日の場合はCygwinで実行される。
• (3)SQL版は普通のSQLなので改行を自由に挿入できるが、psql版はメタコマンドなので全体を1行で入力する必要がある。
• ※TO PROGRAM構文はPostgreSQL 9.3以降で使用可
(1)により、SQL
# \copy (YOUR QUERY in 1 row ) to program '(echo -ne "\xEF\xBB\xBF"; cat) >OUTPUT.csv ' (format csv, header true, null '')
さらに改行を
# \copy (YOUR QUERY in 1 row ) to program '(echo -ne "\xEF\xBB\xBF"; cat) | sed '':loop; N; $!b loop; ;s/\n/\r\n/g'' >OUTPUT.csv ' (format csv, header true, null '')
↓ 比較のため昨日のバージョンを再掲。メタコマンドの間に
# \encoding utf8 # \f ',' \\ \t off \\ \pset footer off \\ \pset format unaligned \\ \x off# YOUR QUERY ... ... \g | (echo -ne "\xEF\xBB\xBF"; cat) | sed ':loop; N; $!b loop; ;s/\n/\r\n/g' >OUTPUT.csv
以下、実行例です。↓ は改行処理なし(BOM
\copy (select * from csv_utf8._001) to program '(echo -ne "\xEF\xBB\xBF"; cat) > /test0710_1.csv' (format csv, header true, null '')

↓ 昨日と同様、出力された

↓ さらに改行を
\copy (select * from csv_utf8._001) to program '(echo -ne "\xEF\xBB\xBF"; cat) | sed '':loop; N; $!b loop; ;s/\n/\r\n/g'' > /test0710_2.csv' (format csv, header true, null '')


今日のが使いづらいのは、1
BOM