リモート の postgresql につないで、
ローカル ファイルシステムにダンプする場合、
COPY コマンドの先頭に \ をつけて実行する必要がある。
psql> \COPY (SELECT * FROM foos WHERE id = 1) TO '/tmp/foos.dump';\ なしだと以下のようなエラーが出る。
psql> COPY (SELECT * FROM foos WHERE id = 1) TO '/tmp/foos.dump';
ERROR: could not open file "/tmp/foos.dump" for writing: No such file or directory参考:
postgresql の copy コマンド使用 | 開発メモ書き
PostgreSQL の COPY コマンドを使いこなす|Everything you do is practice
で、 COPY sql TO file したものを、
COPY "sample_table" FROM stdin; 〜 \. で囲むと、
それをそのまま psql に食わせることができるようになる。