2012-07-14 27 views
22

psql tiene una opción -q/--quiet (variable de entorno QUIET). pg_restore no tiene una opción silenciosa. ¿Hay alguna forma de hacer que pg_restore no muestre con detalle los comandos SQL que está ejecutando?¿Hay una opción "pg_restore --quiet" como "psql --quiet"?

# 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

¿Por qué simplemente no redirigir la salida a '/ dev/nul'? –

+0

No quiero redireccionar la salida a/dev/null porque no quiero perder ningún posible mensaje de error. Probablemente irían a stderr, así que podría redireccionar stdout a/dev/null, pero me gusta la idea de algo así como --quiet better. No me importa ver algún resultado informativo, pero no todos los comandos sql. –

Respuesta

41

La pregunta parece implicar que pg_restore está ejecutando estos comandos SQL y que no le gustaría verlos en la salida. Pero sacarlos es lo que se supone que debe hacer.

pg_restore tiene dos modos de funcionamiento, con o sin conexión a una base de datos. Cuando se llama sin una base de datos (-d opción) como se muestra en la pregunta:

$ pg_restore --cluster 8.4/mycluster mycluster.dump

entonces su único propósito es dar salida a un conjunto de SQL comandos en texto sin formato que se deben alimentar a un intérprete de SQL para restaurar la base de datos. Esos comandos SQL forman un conjunto coherente sin ningún concepto de verbosidad, y son no ejecutados por pg_restore sí mismo. En general, se redirigen a un archivo para su posterior ejecución o se conectan al psql para su ejecución inmediata.

+4

¡Ajá, ahora está todo claro! Estaba asumiendo erróneamente que sin -d, pg_restore crearía automáticamente la base de datos para mí. Pero con su explicación, y con la lectura de la página man de pg_restore (1), está claro ahora. Mi pregunta es una suposición errónea, por lo que voy a pensar en cómo volver a redactarla para que quede más clara para los lectores futuros. Gracias @ Daniel_Vérité! –

Cuestiones relacionadas