4

これは小さなことですが、私には少し面倒で、おそらく設定する方法があるようです。私が次のものを持っているとしましょう:

CREATE OR REPLACE FUNCTION baz()
  RETURNS void AS
$BODY$
DECLARE
BEGIN
  RAISE NOTICE 'I also did some work!';
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

CREATE OR REPLACE FUNCTION bar()
  RETURNS void AS
$BODY$
DECLARE
BEGIN
  RAISE NOTICE 'I did a bunch of work and want you to know about it';
  PERFORM baz();
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

CREATE OR REPLACE FUNCTION foo()
  RETURNS void AS
$BODY$
DECLARE
BEGIN
  PERFORM bar();
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

select foo();

次の出力メッセージが表示されます。

NOTICE:  I did a bunch of work and want you to know about it
CONTEXT:  SQL statement "SELECT bar()"
PL/pgSQL function "foo" line 4 at PERFORM
NOTICE:  I also did some work!
CONTEXT:  SQL statement "SELECT baz()"
PL/pgSQL function "bar" line 5 at PERFORM
SQL statement "SELECT bar()"
PL/pgSQL function "foo" line 4 at PERFORM
Total query runtime: 31 ms.
1 row retrieved.

私が(通常)欲しいのは、次のようなものを見ることです:

NOTICE:  I did a bunch of work and want you to know about it
NOTICE:  I also did some work!
Total query runtime: 31 ms.
1 row retrieved.

これを制御/変更する方法はありますか? 繰り返しますが、これは小さなことであり、Stackoverflow で質問する価値はほとんどありませんが、多くのことが進行中の場合、出力に多くの「ノイズ」が入り始め、それをふるいにかけようとしてすでに過負荷になっている私の脳が傷つきます。 . :)

私はpgAdminIII 1.16.0でPostgreSQL 9.1.5を使用しています

4

2 に答える 2

3

-qオプションで接続してみてください。q は Quiet の略で、必要なものかもしれません。

psql -q -d foo_db

あなたも試すことができます:

  • \set verbosity terse
  • \set quiet on
于 2012-10-19T15:21:56.307 に答える
0

メッセージングとインターフェイスをより細かく制御したい場合は、実際のスクリプト言語に移行する価値があるかもしれません。Python withpsycopg2や Perl with DBD::Pgandなどのツールでデータベース スクリプトを作成するのDBIは非常に簡単です。

SQL実際のスクリプト言語を使用すると、メッセージングを完全に制御できるだけでなく、エラー処理も制御でき、ループやその他の制御構造が得られ、一般的に、スクリプト タスクに対してraw よりもはるかに優れたモデルが提供されます。

于 2012-10-20T02:18:33.177 に答える