web-dev-qa-db-fra.com

Comment désactiver l'en-tête uniquement dans psql (postgresql)

J'utilise PostgreSQL 9.1.X

J'essaie de créer un script psql pour imprimer les résultats sans en-tête mais avec un pied de page.

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

Extrait du document ci-dessus

\pset tuples_only

désactivera l'en-tête et le pied de page. et

\pset footer off

désactivera le pied de page uniquement.

Existe-t-il un moyen dans psql pour désactiver l'en-tête et conserver le pied de page?

Je sais qu'il existe de nombreuses façons de contourner ce problème en utilisant Shell/Perl/quel que soit l'outil de texte que vous aimez, mais je me demande pourquoi il y a une configuration pour le pied de page mais pas pour l'en-tête?

id <--this line I don't want
---- <-- this line I don't want either
 1  <-- this line, yes
(1 row) <-- yes, I want it!
20
skong

Lors de l'exécution de psql à partir de Shell, vous pouvez utiliser -t (imprime uniquement les tuples):

$ 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

Dans psql utilisez \t pour désactiver l'impression du nombre d'en-têtes et de lignes.

14
Tombart

Ma solution n'est pas tout à fait de désactiver, mais plutôt de supprimer les en-têtes.

Vous pouvez essayer de tail la sortie de la requête:

\o | tail -n +2

Avec \o, vous pouvez rediriger la sortie vers un fichier ou un canal, comme dans ce cas. Cette solution a aussi son défaut: au moins dans mon cas, après l'exécution de SELECT [...], Je ne reviens à une invite que si j'appuie sur une touche. Et la première ligne de sortie apparaît après une invite. Si vous redirigez ensuite la sortie vers un fichier, cela ne devrait pas poser de problème.

Ce comportement peut être évité si vous définissez la variable d'environnement PAGER de manière appropriée et utilisez toujours pager is 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)

Dans la version psql fournie avec PostgreSQL 9.2, vous pouvez utiliser le \setenv commande pour plus de commodité (je veux dire que vous n'avez pas à définir une variable env qui peut également affecter d'autres applications).

8
dezso

Vous devez ajouter une option de ligne de commande psql -P "footer=off". Cette option conserve les titres des colonnes dans le résultat.

5
Karen Muñoz