psql variables

Started by Paul Cunninghamabout 21 years ago4 messagesgeneral
Jump to latest
#1Paul Cunningham
paul@blueseacommunications.com

I use a bash script (similar to following example) to update tables.

psql -v passed_in_var=\'some_value\' -f script_name ....

Is it possible to pass a value back from psql to the bash script?

Thanks,
Paul Cunningham

#2George Essig
george.essig@gmail.com
In reply to: Paul Cunningham (#1)
Re: psql variables

On Mon, 14 Mar 2005 11:06:32 -0500, Paul Cunningham
<paul@blueseacommunications.com> wrote:

I use a bash script (similar to following example) to update tables.

psql -v passed_in_var=\'some_value\' -f script_name ....

Is it possible to pass a value back from psql to the bash script?

You can use '\! [ command ]' to execute shell commands within psql.
This may not be what you want though.

George Essig

#3Noname
ptjm@interlog.com
In reply to: Paul Cunningham (#1)
Re: psql variables

In article <4235B688.8000407@blueseacommunications.com>,
Paul Cunningham <paul@blueseacommunications.com> wrote:
% I use a bash script (similar to following example) to update tables.
%
% psql -v passed_in_var=\'some_value\' -f script_name ....
%
% Is it possible to pass a value back from psql to the bash script?

If you run it like this

$(psql -v passed_in_var=\'some_value\' -f script_name)

and arrange for all the script output to be in the form

var1="value 1" var2="value 2"
var3="value 3" ...

then var1, var2, etc will be set in bash (or ksh, or the posix shell).
Note that there are no spaces around the equals signs.
--

Patrick TJ McPhee
North York Canada
ptjm@interlog.com

#4Oleg Bartunov
oleg@sai.msu.su
In reply to: Noname (#3)
Re: psql variables

On Fri, 25 Mar 2005, Patrick TJ McPhee wrote:

In article <4235B688.8000407@blueseacommunications.com>,
Paul Cunningham <paul@blueseacommunications.com> wrote:
% I use a bash script (similar to following example) to update tables.
%
% psql -v passed_in_var=\'some_value\' -f script_name ....
%
% Is it possible to pass a value back from psql to the bash script?

If you run it like this

$(psql -v passed_in_var=\'some_value\' -f script_name)

and arrange for all the script output to be in the form

var1="value 1" var2="value 2"
var3="value 3" ...

then var1, var2, etc will be set in bash (or ksh, or the posix shell).
Note that there are no spaces around the equals signs.

btw, how to expand psql variable in -c "" ?
For example, this works as expected
psql discovery-test -v a1=\'message_parts\' -f tt.sql
but not
psql discovery-test -v a1=\'message_parts\' -c "select * from iostat where relname=:a1;"
ERROR: parse error at or near ":" at character 36
LINE 1: select * from iostat where relname=:a1;

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83