¿Cómo concatenar variables psql?

8

¿Cómo puedo concatenar dos variables psql (cliente PostgreSQL)? Quiero generar una ruta absoluta concatenando una variable de ruta de directorio y una variable de nombre de archivo.

He intentado esto:

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

Pero psql pone un espacio entre la ruta y el archivo, y genera:

/tmp/ foo
Daniel Serodio
fuente

Respuestas:

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

¿Por qué funciona esto? Cito el manual aquí :

\ set [nombre [valor [...]]]

Establece el nombre de la variable interna en valor o, si se proporciona más de un valor, en la concatenación de todos ellos . [...]

El énfasis es mío.

Erwin Brandstetter
fuente
1
Incluso mejor que el mío
dezso
4

Prueba esto:

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

\qechoescribe en el canal de salida de la consulta (a diferencia de lo \echoque escribe en la salida estándar). \o |luego redirige la salida al comando posterior.

dezso
fuente