Používám PostgreSQL 9.1.X
Snažím se vytvořit skript psql
pro tisk výsledků bez záhlaví, ale včetně zápatí.
http://www.postgresql.org/docs/9.1/static/app-psql.html
Z výše uvedeného dokumentu
\pset tuples_only
vypne záhlaví i zápatí. a
\pset footer off
vypne pouze zápatí.
Existuje v psql
způsob, jak vypnout záhlaví a udržet zápatí?
Vím, že existuje mnoho způsobů, jak tento problém vyřešit pomocí Shell/Perl/libovolného textového nástroje, který se vám líbí, ale zajímalo by mě, proč existuje záloha pro zápatí, ale nikoli záhlaví?
id <--this line I don't want
---- <-- this line I don't want either
1 <-- this line, yes
(1 row) <-- yes, I want it!
Při provádění psql
z prostředí Shell můžete použít volbu -t
(Pouze tiskne n-tice):
$ 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
V rámci psql
pomocí \t
Vypněte tiskové hlavičky a počet řádků.
Moje řešení se úplně nevypíná, ale spíše zahodí záhlaví.
Můžete zkusit tail
výstup dotazu:
\o | tail -n +2
Pomocí \o
Můžete přesměrovat výstup do souboru nebo do kanálu, jako v tomto případě. Toto řešení má také svou chybu: alespoň v mém případě, po provedení SELECT [...]
, Se nevrátím do výzvy, dokud nestisknu klávesu. A první výstupní řádek se objeví po výzvě. Pokud pak přesměrujete výstup do souboru, neměl by to být problém.
Tomuto chování se lze vyhnout, pokud nastavíte environmentální proměnnou PAGER
vhodně a vždy použijete pager je 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)
Ve verzi psql
, která je dodávána s PostgreSQL 9.2, můžete pro pohodlí použít příkaz \setenv
(Myslím, že nemusíte nastavovat proměnnou env, která může ovlivnit i jiné aplikace).
Do příkazového řádku psql musíte přidat možnost -P "footer=off"
. Tato možnost ponechá názvy sloupců ve výsledku.