PostgreSQLを使っていて、
「select結果の値だけをコピペして、Excelに貼りたい」
っていう場合、どうするか?
仮に、test_db1というデータベースにusertableがあるとします。
フィールドとそのレコードが以下のような感じだとします。
| id_no | user_name | rec_date |
|---|---|---|
| 0001 | よこい しょういち | 2009-04-16 14:57:09 |
| 0002 | くさなぎ しんご | 2009-05-13 04:02:55 |
このテーブルの内容を取得するため、
get_usertable.sqlというファイルに
SELECT * FROM usertable;
と書いておくとします。
通常だと、
$ psql -d test_db1 -f get_usertable.sql -o ret.txt
とやると、ret.txtの中身は
id_no | user_name | rec_date
0001 | よこい しょういち | 2009-04-16 14:57:09
0002 | くさなぎ しんご | 2009-05-13 04:02:55
とかね。こんな感じになる。
Excelにはっつけて、区切り文字を "|"としたら値の確認はできるけど
不要な空白とかが入ってしまう。フィールド名もいらないし。
そこで!csv形式で出力する方法を以下に書きます。
$ psql -d test_db1 -f get_usertable.sql -o ret.txt -t -A -F ","
こうすると、ret.txtの中身は
0001,よこい しょういち,2009-04-16 14:57:09
0002,くさなぎ しんご,2009-05-13 04:02:55
となります。便利。
ちなみにTSV形式にしたい場合は、-Fの値をタブにしてやればいいんだけど、
"\t"とか書いてもだめみたい。タブのコードを入れること。
(linuxにputtyで接続してる場合は、Ctrl-v+Tabでタブが入力されます)