環境:
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
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。