Cómo desactivar el encabezado solo en psql (postgresql)

18

Estoy usando PostgreSQL 9.1.X

Estoy tratando de crear un psqlscript para imprimir resultados sin un encabezado pero incluyendo un pie de página.

http://www.postgresql.org/docs/9.1/static/app-psql.html

Del documento anterior

\pset tuples_only

apagará tanto el encabezado como el pie de página. y

\pset footer off

solo desactivará el pie de página.

¿Hay alguna manera psqlde apagar el encabezado y mantener el pie de página?

Sé que hay muchas formas de solucionar este problema utilizando shell / perl / cualquier herramienta de texto que desee, sin embargo, me pregunto por qué hay una configuración para el pie de página pero no una para el encabezado.

id <--this line I don't want
---- <-- this line I don't want either
 1  <-- this line, yes
(1 row) <-- yes, I want it!
skong
fuente
¿Estás en Unix? Si es así, puede usar head / tail / grep / awk / sed / un millón de otras cosas
Philᵀᴹ

Respuestas:

10

Al ejecutar psqldesde shell puede usar la -topción (solo imprime tuplas):

$ psql -t -c "SELECT version();"
 PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit

En psqluso \tpara desactivar el encabezado de impresión y el conteo de filas

Tombart
fuente
7

Mi solución no es simplemente apagar, sino descartar encabezados.

Puede intentar tailel resultado de la consulta:

\o | tail -n +2

Con \o, puede redirigir la salida a un archivo o una tubería, como en este caso. Esta solución también tiene su defecto: al menos en mi caso, después de la ejecución de SELECT [...], no vuelvo a un mensaje a menos que presione una tecla. Y la primera fila de salida aparece después de una solicitud. Si luego redirige la salida a un archivo, no debería ser un problema.

Este comportamiento se puede evitar si configura la PAGERvariable de entorno de forma adecuada y siempre utiliza el localizador psql:

$ export PAGER='tail -n +3'

$ psql -U postgres -d test
psql (9.1.4, server 9.1.5)

test=# \pset pager always
Pager is always used.

test=# select * from a;
  2 | b
  3 | b
(2 rows)

En la psqlversión que viene con PostgreSQL 9.2, puede usar el \setenvcomando por conveniencia (quiero decir que no tiene que establecer una variable env que pueda afectar también a otras aplicaciones).

dezso
fuente
Buen truco, es bueno saber la opción de buscapersonas. pero realmente no hay opción para el encabezado en sí? Tal vez debería comprobar mailist de PostgreSQL
skong
@sinbadblue No. Como ya has verificado, no. Sin embargo, puede publicar una solicitud de función :) Sería un avance útil.
dezso
5

Debe agregar una opción de línea de comando psql -P "footer=off". Esta opción mantiene los títulos de las columnas en el resultado.

Karen Muñoz
fuente
Lea la pregunta.
Colin 't Hart