環境:
CentOS 6.5
PostgreSQL9.7
以下のふたつのファイルを使って、cmd.sh
を実行することでpsqldepl/pgsqlのスクリプトを実行しています。
- cmd.sh
bash
1#!/bin/bashcd 2$(dirname $(readlink -f $0)) 3 4cmd=$(cat ./script.txt) 5result=$(eval "$cmd" 2>&1)
- script.txt
psql -U hoge -d fuga << 'EOT' do $$ declare begin raise warning 'コメント'; end; $$; EOT
だいぶ本来のソースからは省略していますが…
やりたいことは、pl/pgsqlの中でraiseで出力した文字列を独自のログに吐きたいだけです。
以下のようなことを試してみてもうまくいきませんでした。
0. 提示したままで実行すると、cmd.sh
の$result
にはDO
だけが吐かれます。
0. psqlの-o
スイッチ(問い合わせの結果をファイル (または |パイプ)に送る)を付けてみましたが、ファイル名を指定しないでパイプを使うと、ヒアドキュメントと組み合わせると上手く動かないようで、eval
コマンドが失敗します。
0. 同じく-o
スイッチで、今度は出力先のファイル名を指定してみましたが、上と同様DO
だけが吐かれます。
何かいい方法はないでしょうか…ご助言よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。