ablog

不器用で落着きのない技術者のメモ

psql で標準入力で渡されたクエリを実行する

psql で標準入力で標準入力で渡されたクエリを実行したい場合、-f オプションに - を指定すればよい。

  • ドキュメント

-f filename
--file=filename

(中略)

filenameに-(ハイフン)を指定すると、標準入力からEOFを示すもの、または\qメタコマンドまで読み取られます。 これは対話的入力をファイルからの入力と混在させるために使うことができます。 ただし、この場合、Readlineは使われないことに注意してください(-nが指定された場合と同様です)。

psql
  • 使用例
cat copy_lineorder.sql|psql "host=${PG_HOST} port=${PG_PORT} dbname=${PG_DB} user=${PG_USER}" -a -f - \
            >> "${LOG_DIR}/${SCRIPT_BASE_NAME}_${CURRENT_DATE}.log" 2>&1