Wie verbergen Sie die Spaltennamen und die Zeilenanzahl in der Ausgabe von psql?
Ich führe eine SQL-Abfrage über psql aus mit:
psql --user=myuser -d mydb --output=result.txt -c "SELECT * FROM mytable;"
und ich erwarte Ausgabe wie:
1,abc
2,def
3,xyz
aber stattdessen bekomme ich:
id,text
-------
1,abc
2,def
3,xyz
(3 rows)
Natürlich ist es nicht unmöglich, die oberen beiden Zeilen und die untere Zeile nachträglich herauszufiltern, aber gibt es eine Möglichkeit, dies nur mit psql zu tun? Beim Lesen der Manpage sehe ich Optionen zum Steuern des Feldtrennzeichens, aber nichts zum Ausblenden von Fremdausgaben.
quelle
COPY
kann in der Tat eine gültige Alternative sein, aber die Datei wird auf dem Server und nicht auf dem Computer landen, auf dem psql ausgeführt wird ...psql
auf dem Server, daher war das für mich kein Problem. . .(nnnn rows)
Fußzeile.Sie können die Ausgabe auch aus psql umleiten und dieselbe Option verwenden. Verwenden Sie \ o, um die Ausgabedatei
\pset
festzulegen , und \ t, um nur Tupel auszugeben (oder um nur die "Fußzeile" der Zeilenanzahl zu deaktivieren).\o /home/flynn/queryout.txt \t on SELECT * FROM a_table; \t off \o
Alternative,
quelle
in der Regel , wenn Sie den psql generierte Ausgabe analysieren wollen würden Sie die einstellen wollen
-A
und-F
...# generate t.col1, t.col2, t.col3 ... while read -r c; do test -z "$c" || echo , $table_name.$c | \ perl -ne 's/\n//gm;print' ; \ done < <(cat << EOF | PGPASSWORD=${postgres_db_useradmin_pw:-} \ psql -A -F -v -q -t -X -w -U \ ${postgres_db_useradmin:-} --port $postgres_db_port --host $postgres_db_host -d \ $postgres_db_name -v table_name=${table_name:-} SELECT column_name FROM information_schema.columns WHERE 1=1 AND table_schema = 'public' AND table_name =:'table_name' ; EOF ) echo -e "\n\n"
Ein Beispiel für den vollständigen Bash-Aufruf finden Sie hier :
quelle