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 (
...
答案 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