在PostgreSQL和pgAdminIII中更改消息输出

时间:2012-10-19 15:12:32

标签: postgresql postgresql-9.1 pgadmin

这是一件小事,但它对我来说有点烦人,似乎可能有一种配置它的方法。假设我有以下内容:

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上几乎不值得提问,但是如果你有很多东西正在进行,它会在输出中引入很多“噪音”,这会让我已经超负荷的大脑受到伤害,试图筛选它。 :)

我正在使用PostgreSQL 9.1.5和pgAdminIII 1.16.0

2 个答案:

答案 0 :(得分:3)

尝试使用-q选项进行连接。 q代表Quiet,可能就是你所需要的。

psql -q -d foo_db

您也可以尝试:

  • \set verbosity terse
  • \set quiet on

答案 1 :(得分:0)

如果您想要更好地控制消息传递和界面,可能值得转向真正的脚本语言。使用psycopg2或Perl DBD::PgDBI在Python等工具中编写数据库脚本非常简单。

使用真正的脚本语言不仅可以让您完全控制消息传递,还可以控制错误处理,为您提供循环和其他控制结构,并且通常提供比原始SQL更好的模型用于脚本任务。