psql変数を連結する方法は?


8

2つのpsql(PostgreSQLクライアント)変数をどのように連結できますか?ディレクトリパス変数とファイル名変数を連結して絶対パスを生成したい。

私はこれを試しました:

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

しかし、psqlはパスとファイルの間にスペースを入れて出力します。

/tmp/ foo

回答:


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

なぜこれが機能するのですか?私はここにマニュアルを引用します:

\ set [名前[値[...]]]

内部変数名をvalueに設定します。複数の値が指定されている場合は、それらすべての連結に設定します。[...]

鉱山を強調します。


1
私よりも良い
dezso

4

これを試して:

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

\qechoクエリ出力チャネルに書き込みます(\echo標準出力に書き込むとは異なります)。 \o |次に、出力を後続のコマンドにリダイレクトします。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.