2012-07-14 28 views
22

psql có tùy chọn -q/--quiet (biến môi trường QUIET). pg_restore không có tùy chọn yên tĩnh. Có cách nào để làm cho pg_restore không hiển thị rõ ràng các lệnh SQL mà nó đang thực hiện không?Có tùy chọn "pg_restore --quiet" như "psql --quiet" không?

# 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

Tại sao bạn không chuyển hướng đầu ra đơn giản sang '/ dev/nul'? –

+0

Tôi không muốn chuyển hướng đầu ra đến/dev/null vì tôi không muốn mất bất kỳ thông báo lỗi tiềm ẩn nào. Họ có thể sẽ đi đến stderr, vì vậy tôi chỉ có thể chuyển hướng stdout đến/dev/null, nhưng tôi thích ý tưởng của một cái gì đó như --quiet tốt hơn. Tôi không nhớ nhìn thấy một số đầu ra thông tin, nhưng không phải tất cả các lệnh sql. –

Trả lời

41

Câu hỏi có vẻ ngụ ý rằng pg_restore đang thực thi các lệnh SQL này và bạn sẽ không muốn thấy chúng trong đầu ra. Nhưng xuất chúng là những gì nó chỉ phải làm.

pg_restore có hai phương thức hoạt động, có hoặc không có kết nối với cơ sở dữ liệu. Khi nó được gọi mà không có một cơ sở dữ liệu (-d tùy chọn) như trong câu hỏi:

$ pg_restore --cluster 8.4/mycluster mycluster.dump

sau đó mục đích duy nhất của nó là để ra một tập hợp các lệnh SQL lệnh trong văn bản thuần cần được đưa vào một trình thông dịch SQL để khôi phục cơ sở dữ liệu. Các lệnh SQL này tạo thành một tập hợp mạch lạc mà không có bất kỳ khái niệm nào về độ dài, và chúng là không được thực thi bởi chính mình là pg_restore. Chúng thường được chuyển hướng thành một tệp để thực thi sau này hoặc được chuyển thành psql để thực thi ngay lập tức.

+4

Aha, bây giờ tất cả đều rõ ràng! Tôi đã nhầm lẫn giả định rằng không có -d, pg_restore sẽ tự động tạo cơ sở dữ liệu cho tôi. Nhưng với lời giải thích của bạn, và với việc đọc trang pg_restore (1), bây giờ đã rõ. Câu hỏi của tôi như là một giả định sai lầm, vì vậy tôi sẽ suy nghĩ về cách viết lại nó để làm cho nó rõ ràng hơn cho người đọc trong tương lai. Cảm ơn @ Daniel_Vérité! –

Các vấn đề liên quan