是否有像“psql --quiet”这样的“pg_restore --quiet”选项?

时间:2012-07-14 16:17:47

标签: postgresql postgresql-9.1 psql pg-restore

psql有一个-q / --quiet选项(环境变量QUIET)。 pg_restore没有安静的选择。有没有办法让pg_restore没有详细地显示它正在执行的SQL命令?

# e.g., here's the verbose output that I don't want to see:
$ pg_restore --cluster 8.4/mycluster mycluster.dump
---- PostgreSQL database dump
--
SET statement_timeout = 0;SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;SET check_function_bodies = false;
...
--
-- Name: data_src; Type: TABLE; Schema: public; Owner: postgres; Tablespace:--
CREATE TABLE data_src (
...

2 个答案:

答案 0 :(得分:53)

这个问题似乎暗示pg_restore正在执行这些SQL命令,您不希望在输出中看到它们。但输出它们是它应该做的。

pg_restore有两种操作模式,无论是否连接到数据库。如果在没有数据库(-d选项)的情况下调用它,如问题所示:

  

$ pg_restore --cluster 8.4 / mycluster mycluster.dump

然后它的唯一目的是以纯文本格式输出一组SQL命令,这些命令应该被送到SQL解释器来恢复数据库。这些SQL命令形成一个连贯的集合,没有任何冗长的概念,pg_restore本身不执行。它们通常会重定向到一个文件中以便以后执行,或者通过管道传输到psql以立即执行。

答案 1 :(得分:1)

您可以将标准输出重定向到文件:

pg_restore --cluster 8.4/mycluster mycluster.dump > pg_restore.log

或提供-d选项,但您想要的是-f-d

pg_restore -f pg_restore.sql --cluster 8.4/mycluster mycluster.dump
pg_restore -d yourdatabase --cluster 8.4/mycluster mycluster.dump