
昨日の応用編で、実行環境は同じ
コマンドはわずか ↓ これだけ。1
\t off \\ \f '\t' \\ \pset format unaligned ( ... your query ... ) \g | putclip -- DB: utf8 -> Excel: sjis ( ... your query ... ) \g | iconv -f utf8 -t sjis | putclip
昨日もやったけど、\g
\set vname '\\g | iconv -f utf8 -t sjis | putclip' ( ... your query ...) :vname
↓ 実際の様子。1
# \t off \\ \f '\t' \\ \pset format unaligned Tuples only is off. Field separator is " ". Output format is unaligned. # select * from pg_tables \g | putclip


同じクエリ結果を、クリップボードでなく普通に表示すると ↓ こんな感じ。列間のタブ区切りが、Excel
# select * from pg_tables; schemaname tablename tableowner tablespace hasindexes pg_catalog pg_statistic postgres t f f pg_catalog pg_type postgres t f f f pg_catalog pg_authid postgres pg_global t f pg_catalog pg_user_mapping postgres t f f pg_catalog pg_largeobject postgres t f f pg_catalog pg_attribute postgres t f f pg_catalog pg_proc postgres t f f f pg_catalog pg_class postgres t f f ...

日本語のクエリ結果で、うっかり文字コード変換を忘れると ↓ 文字化けします。2
# select chr(12354 + i) from generate_series(1, 50) as i \g | putclip

# select chr(12354 + i) from generate_series(1, 50) as i \g | iconv -f utf8 -t sjis | putclip

↓ 少し違う方法で、\copy
# \copy (select chr(12354 + i) from generate_series(1, 50) as i) to '/dev/clipboard' (format csv, delimiter e'\t', header true, null '') COPY 50

同じ
# \copy (select chr(12354 + i) from generate_series(1, 50) as i) to '/dev/clipboard' (encoding sjis, format csv, delimiter e'\t', header true, null '') COPY 50

\copy
# \copy (select * from pg_tables) to '/dev/clipboard'; COPY 61
