¿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

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.


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.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.