PostgreSQLのCOPYコマンドはファイル出力できるが、出力ファイルパスが任意の場合にクセがある。
環境
- CentOS 7.6.1810
- PostgreSQL 9.2.24
サンプル
bashの記述
psqlコマンドに
- 実行するSQLファイル
- 出力ファイル名
を渡すサンプル。
#!/bin/bash psql -U postgres -f "/hoge/export.sql" --set file_name=/hoge/version.txt
SQLファイルの記述
copyコマンドでバージョン情報を出力する。出力先はpsqlコマンドから渡されたファイル名を指定。
copy (select version()) to :'file_name';
ポイント
sqlファイルの引数は:file_name
ではなく:'file_name'
と記述する。前者だとシンタックスエラーになる。
また、':file_name'
のように、コロンが内側だとパスを認識してくれないので注意する。