38

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 (
...
4

2 回答 2

73

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

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

$ pg_restore --cluster 8.4/mycluster mycluster.dump

那么它的唯一目的是以纯文本形式输出一组 SQL 命令,这些命令应该被提供给 SQL 解释器以恢复数据库。这些 SQL 命令形成了一个连贯的集合,没有任何冗长的概念,并且它们不会自行执行pg_restore它们通常被重定向到文件中以供以后执行或通过管道输入psql以立即执行。

于 2012-07-15T15:25:00.657 回答
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
于 2018-08-21T20:07:19.920 回答