On Mar 22, 2009, at 9:03 PM, Greenhorn wrote:
Hi,
I'm trying to pass variables on a bash script embedded with psql
commands.
cat header.txt
"to1","from1","subject1"
"to2","from2","subject2"
"to3","from3","subject3"
"to4","from4","subject4"
cat b.sh
#!/bin/bash
two="2"
psql -h localhost -U postgres -d mobile -c "create temp table header (
field_1 text not null,
field_2 text not null,
field_3 text not null
);
\\copy header FROM header.txt CSV
SELECT * FROM header limit "$two"; "
When I execute b.sh
================================
ERROR: syntax error at or near "\"
LINE 10: \copy header FROM header.txt CSV
^
How do I use \c (or any other psql commands beginning with a "\") in a
bash script?
For multi-line input to a psql call in a bash (or any decent shell)
script, I'd use a here document:
#!/bin/bash
#!/bin/bash
two="2"
psql -d pagila <<COPYTEST
create temp table header (
field_1 text not null,
field_2 text not null,
field_3 text not null
);
\copy header FROM header.txt CSV
SELECT * FROM header limit $two;
COPYTEST
$ ./tst.sh
Null display is "\N".
Timing is on.
CREATE TABLE
Time: 7.568 ms
Time: 2.374 ms
field_1 | field_2 | field_3
---------+---------+----------
to1 | from1 | subject1
to2 | from2 | subject2
(2 rows)
Time: 1.011 ms
(P.S. Your quotes around $two in your original are not needed, in fact
they're straight up broken as $two is already inside of a double-
quoted string).
Erik Jones, Database Administrator
Engine Yard
Support, Scalability, Reliability
866.518.9273 x 260
Location: US/Pacific
IRC: mage2k
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general