Miernik wrote:

> BTW, doesn't there exist any tool does what "psql -c" does, but is
> written in plain C, not perl? I was looking for such psql replacement,
> but couldn't find any.

As others have noted, psql is written in C, and you're using a wrapper.

Assuming your're on Debian or similar you should be able to invoke the
real psql with:

/usr/lib/postgresql/8.3/bin/psql

psql is a C executable that uses libpq directly, and is really rather
low-overhead and fast.

As for how to issue multiple commands in one statement in a shell
script: one way is to use a here document instead of "-c". Eg:


psql <<__END__
UPDATE blah SET thingy = 7 WHERE otherthingy = 4;
DELETE FROM sometable WHERE criterion = -1;
__END__

You can of course wrap statements in explicit transaction BEGIN/COMMIT,
etc, as appropriate.

As you start doing more complex things, and especially once you start
wanting to have both good performance *and* good error handling, you'll
want to move away from sql scripts with psql and toward using perl,
python, or similar so you can use their native interfaces to libpq.

--
Craig Ringer

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

Reply via email to