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.


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.


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.

3
También \pset pager [on|off]por resultado constante.
lolesque


3

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

\ pset buscapersonas


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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.