Apague el buscapersonas para la salida interactiva de psql

36

Cambiamos de PostgreSQL 8.3 a 9.0. Tal vez sea una nueva característica o tal vez solo un cambio de configuración, pero ahora cuando la salida de los comandos (como, \d tablename) excede el espacio vertical visible, psql parece canalizar la salida a través de algo similar less. No pude encontrar una manera de desactivar este comportamiento. ¿Algún consejo? Gracias.

PD: estoy desplazando el búfer usando PuTTY, Shift+PgUp/PgDnasí que no necesito la paginación de psql. Además, cuando qpresiono la paginación de psql, su salida desaparece por completo de la pantalla (al igual que después de ejecutar lessen bash), lo cual es incorrecto desde el punto de vista de los casos de uso generales.

Yuri Ushakov
fuente
Si estás aquí desde Google solo tratando de desplazarte por el buscapersonas, no es Spacen o PgDn o flecha hacia abajo como lo intenté.
Noumenon

Respuestas:

35

Hay documentación para eso.

Desde la sección \ pset del manual de psql :

buscapersonas

Controla el uso de un programa de buscapersonas para la consulta y la salida de ayuda psql. Si se establece la variable de entorno PAGER, la salida se canaliza al programa especificado. De lo contrario, se utiliza un valor predeterminado dependiente de la plataforma (como más).

Cuando la opción del localizador está desactivada, el programa del localizador no se utiliza. Cuando la opción de buscapersonas está activada, el buscapersonas se usa cuando corresponde, es decir, cuando la salida es a un terminal y no cabe en la pantalla. La opción de buscapersonas también se puede establecer en siempre, lo que hace que el buscapersonas se use para todas las salidas de terminal, independientemente de si cabe en la pantalla. \ pset pager sin un valor activa y desactiva el uso del localizador.

Sven
fuente
99
Gracias. Los looks completos solución como: psql -P pager.
Yuri Ushakov
3
Supongo que incluso puede poner una opción en su archivo ~ / .psqlrc para evitar tener que ingresar esto cada vez.
Sven
De todos modos para pasar argumentos a menos?
snapfractalpop
3
También me encontré con el problema de Yuri. Como se describió anteriormente. Puede usar \pset pageren psql para alternar si la salida va al localizador. Sin embargo, debería poder usar un buscapersonas y no hacer que la salida desaparezca de la pantalla cuando salga. La respuesta es usar 'más' en lugar de 'menos' como buscapersonas. Puede hacerlo configurando la variable de entorno PAGER en su shell o agregando una variable de entorno PAGER a un archivo ~ / .psqlrc.
Michael Rush
44
@MichaelRush: configúrelo PAGERen less -Xy no borrará la pantalla.
Sven
21

Pruebe el conmutador:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.
Lebnik
fuente
3
También \pset pager [on|off]por resultado constante.
lolesque
4

Apague el buscapersonas con

\pset pager off
David Jones
fuente
Esta es simplemente la respuesta aceptada para mí. Gracias.
Nam G VU
3

agregue el siguiente código en ~ / .psqlrc para retener el comportamiento

\ pset buscapersonas

Vivin Veerali
fuente
0

Para apagar el buscapersonas cuando se usa psqlen el shell:

psql -P pager=off ...

También puede exportar una PAGERvariable de entorno vacía , por lo que no necesita agregar la opción a cada declaración. Permanecerá configurado hasta que cierre su shell actual.

export PAGER=
psql ...

Finalmente, una solución que puede ser más fácil de recordar: canalice la salida cat, lo que deshabilitará el buscapersonas predeterminado

psql ... | cat
mivk
fuente
0

La mejor manera en resumen es establecer una variable de entorno para el localizador, por ejemplo

PAGER='less -X' psql

o para configurarlo una vez

export PAGER='less -X'

entonces corre

psql

Brad Parks
fuente