BUG #14493: psql command : Unable to use set with \copy

Started by Nonameover 9 years ago2 messagesbugs
Jump to latest
#1Noname
maxandreogeret@gmail.com

The following bug has been logged on the website:

Bug reference: 14493
Logged by: Maxandre Ogeret
Email address: maxandreogeret@gmail.com
PostgreSQL version: 9.4.1
Operating system: Redhat
Description:

Hello.

When launching a .sql file from batch script with psql command you can't
pass a variable with set.

batch file :
parameter=$1

psql -h XXX -U XXX -d XXX $@ --set foo=$parameter

SQL file :
\COPY ( SELECT * FROM table where id = :'foo') TO 'out.lst' WITH DELIMITER
AS '|' NULL AS 'ISNULL';

This won't work. but \qecho :'foo'

Will work.

Thanks for your reading.

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: BUG #14493: psql command : Unable to use set with \copy

maxandreogeret@gmail.com writes:

When launching a .sql file from batch script with psql command you can't
pass a variable with set.

I think the actual issue here has nothing to do with batch files;
rather the problem is that \copy doesn't expand potential variable
references in its arguments. I'm not sure about the compatibility
implications of changing that. In the meantime, perhaps you could
use COPY instead of \copy.

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs