nakamurakko’s blog

仕事で覚えたこと、勉強したことを自分のメモ代わりに書いていこうかなと。

PostgreSQL psqlを使ったファイル出力時に任意のファイル名を渡す

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'のように、コロンが内側だとパスを認識してくれないので注意する。