Wie verkette ich psql-Variablen?

8

Wie kann ich zwei psql-Variablen (PostgreSQL-Client) verketten? Ich möchte einen absoluten Pfad generieren, indem ich eine Verzeichnispfadvariable und eine Dateinamenvariable verkette.

Ich habe das versucht:

\set path '/tmp/'
\set file 'foo'
\echo :path:file

Aber psql setzt ein Leerzeichen zwischen den Pfad und die Datei und gibt Folgendes aus:

/tmp/ foo
Daniel Serodio
quelle

Antworten:

8
\set path '/tmp/'
\set file 'foo'
\set pf :path:file \echo :pf
/tmp/foo

Warum funktioniert das? Ich zitiere das Handbuch hier :

\ set [name [value [...]]]

Setzt den internen Variablennamen auf Wert oder, wenn mehr als ein Wert angegeben ist, auf die Verkettung aller . [...]

Hervorhebung von mir.

Erwin Brandstetter
quelle
1
Noch besser als meins
dezso
4

Versuche dies:

\set path /tmp/
\set file foo
\qecho :path:file \o | sed s/\ //
/tmp/foo

\qechoschreibt in den Abfrage-Ausgabekanal (im Gegensatz zu dem \echo, der in die Standardausgabe schreibt). \o |leitet die Ausgabe dann an den nachfolgenden Befehl weiter.

dezso
quelle