2012-06-24 36 views
89

estoy corriendo un script en mi servidor PostgreSQL:PostgreSQL desactivar una mayor producción

psql db -f sql.sql 

de bash o en un script cron.

Sigue intentando paginar la salida con more o less.

¿Cómo desactivo la paginación de resultados en psql?

Todo lo que quiero hacer es cambiar los datos, no me importa ninguna salida.

Respuesta

3
psql db -f sql.sql > /dev/null 
6

fiesta, siendo un shell, tiene 2 streams puede redirigir los datos de salida: stdout y stderr, porque esta salida debe ser redirigido a alguna parte, Linux tiene una específica 'desprenderse todo' nodo alcanzable a través de /dev/null. Todo lo que envíes allí desaparecerá en el vacío.

(conchas también tienen un flujo de entrada, pero voy a ignorar esto aquí ya que preguntas para la supresión de la producción)

Estas corrientes están representadas por los números: 1 para la salida estándar y 2 para stderr.

Así que si desea redirigir la salida estándar simplemente que haría que los < y > operadores (básicamente donde apunta a es donde los datos fluyen a)

Supóngase que se desea suprimir la salida estándar (redirigir a/dev/null):

psql db -f sql.sql > /dev/null

Como se puede ver esto es la salida estándar es por defecto, sin número de flujo se ha utilizado si desea utilizar el número de corriente que iba a escribir

psql db -f sql.sql 1> /dev/null

Ahora bien, si desea suprimir estándar de error (número de corriente 2), tendrá que utilizar

psql db -f sql.sql 2> /dev/null

También puede redirigir una secuencia a otra, por ejemplo estándar de error a la salida estándar, que es útil si desea guardar todos los resultados en algún lugar, regular y errores.

psql db -f sql.sql 2>&1 > log.txt

cuenta que no puede haber espacios entre 2>&1

Por último y, a veces más interesante es el hecho de que puede suprimir toda la salida mediante el uso de &>, para cuando se desea es perfectamente tranquila '

psql db -f sql.sql &> /dev/null

+1

Si bien esta información es sólida, en principio, no funciona en absoluto en este caso específico, debido a psql no envía los mensajes informativos a stderr. Están entremezclados con datos en stdout. –

+0

De repente me doy cuenta de que su punto es que el caso final '&>' puede ser utilizado por el OP para detener el buscapersonas, al suprimir toda la salida. Eliminaré mi voto negativo si modifica su respuesta de alguna manera. –

153

Para desactivar la paginación, pero conservan la salida, usar:

\pset pager off 

Para recordar esta configuración, añadirlo a su ~/.psqlrc.

Ver the psql manual.

En las versiones anteriores de Pg fue simplemente un conmutador, por lo \pset pager

Para completamente salida de la consulta suprimir, utilice \o /dev/nullpsql en el script.

Para suprimir la salida informativa de psql, ejecútela con -q o configure QUIET=1 en el entorno.


para producir resultados y tirar a la basura puede redirigir stdout-/dev/null con:

psql db -f sql.sql >/dev/null 

Puede redirigir stdout y stderr con:

psql db -f sql.sql >&/dev/null 

pero no lo hago lo recomiendo, ya que arrojará información de error que podría advertirle que algo no está funcionando bien. También estás produciendo resultados y tirándolos, lo cual es ineficiente; es mejor que no los produzcas en primer lugar ajustando tus consultas.

+0

Eso le impide usar un buscapersonas pero no detiene la salida, ¿no? Supongo que necesitarías 'PAGER ="/dev/null "psql db -P pager = always -f sql.sql' para que siempre matara la salida. –

+2

No, use \ o/dev/null –

67

que estaba buscando para esto también, he encontrado el camino en un similar question en ServerFault:

psql -P pager=off <other params> 

desactiva la paginación cosa, sin suprimir la producción.

+1

Esta respuesta fue más útil que nada sobre -P en las páginas man. ¡Gracias! – nortally

+0

eso es lo que necesito exactamente.Gracias :) –

1

Aquí hay otra opción. Se tiene la ventaja de que usted no tiene que recordar nombres de las opciones psql, etc.

psql ... | cat 
+0

absolute protip! +1 – sjas

Cuestiones relacionadas