Comment concaténer des variables psql?

8

Comment puis-je concaténer deux variables psql (client PostgreSQL)? Je veux générer un chemin absolu en concaténant une variable de chemin de répertoire et une variable de nom de fichier.

J'ai essayé ça:

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

Mais psql place un espace entre le chemin et le fichier, et affiche:

/tmp/ foo
Daniel Serodio
la source

Réponses:

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

Pourquoi ça marche? Je cite le manuel ici :

\ set [nom [valeur [...]]]

Définit le nom de la variable interne sur valeur ou, si plusieurs valeurs sont données, sur la concaténation de toutes . [...]

Je souligne.

Erwin Brandstetter
la source
1
Encore mieux que le mien
dezso
4

Essaye ça:

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

\qechoécrit sur le canal de sortie de la requête (contrairement à \echoce qui est écrit sur la sortie standard). \o |redirige ensuite la sortie vers la commande suivante.

dezso
la source