PostgreSQL psqlの使い方1 | ヘビィ・SMD!

ヘビィ・SMD!

そんな・・・バナナ!!
1. 甘え度+10 恐れ度+10 寿命-1週間
2. 甘え度+10 恐れ度-10
3. 甘え度-10 恐れ度-10 寿命+1週間

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でタブが入力されます)