教わったとおりにやったらできました。
とにかく結果だけ手元にほしい時なんかに。
支度
こんな感じで準備がしてあるとする。
コマンドラインからSQLを実行する
psql -c
でコマンドラインからSQL文を渡して実行結果を得ることができる。sshのパラメータとしてコマンドを渡すとそのコマンドだけ実行して結果だけ得ることができるので、このようなことができる。
% ssh pi@192.168.11.11 psql -c '"select * from actor limit 10;" -U pi -d dvdrental'
pi@192.168.11.11's password:
actor_id | first_name | last_name | last_update
----------+------------+--------------+------------------------
1 | Penelope | Guiness | 2013-05-26 14:47:57.62
2 | Nick | Wahlberg | 2013-05-26 14:47:57.62
3 | Ed | Chase | 2013-05-26 14:47:57.62
4 | Jennifer | Davis | 2013-05-26 14:47:57.62
5 | Johnny | Lollobrigida | 2013-05-26 14:47:57.62
6 | Bette | Nicholson | 2013-05-26 14:47:57.62
7 | Grace | Mostel | 2013-05-26 14:47:57.62
8 | Matthew | Johansson | 2013-05-26 14:47:57.62
9 | Joe | Swank | 2013-05-26 14:47:57.62
10 | Christian | Gable | 2013-05-26 14:47:57.62
(10 行)
カンマ区切りで出力
COPY
を使うと出力をファイルや標準出力に送ってくれるうえ、ついでにCSV出力してくれたりする。
% ssh pi@192.168.11.11 psql -c '"copy (select * from actor limit 10) to stdout csv header;" -U pi -d dvdrental'
pi@192.168.11.11's password:
actor_id,first_name,last_name,last_update
1,Penelope,Guiness,2013-05-26 14:47:57.62
2,Nick,Wahlberg,2013-05-26 14:47:57.62
3,Ed,Chase,2013-05-26 14:47:57.62
4,Jennifer,Davis,2013-05-26 14:47:57.62
5,Johnny,Lollobrigida,2013-05-26 14:47:57.62
6,Bette,Nicholson,2013-05-26 14:47:57.62
7,Grace,Mostel,2013-05-26 14:47:57.62
8,Matthew,Johansson,2013-05-26 14:47:57.62
9,Joe,Swank,2013-05-26 14:47:57.62
10,Christian,Gable,2013-05-26 14:47:57.62
あとは手元のcsvファイルにリダイレクトするなり煮るなり焼くなり。